numpy和pandas中数组的合并、拉直和重塑实例


Posted in Python onJune 28, 2019

合并

在numpy中合并两个array

numpy中可以通过concatenate,参数axis=0表示在垂直方向上合并两个数组,等价于np.vstack;参数axis=1表示在水平方向上合并两个数组,等价于np.hstack。

垂直方向:

np.concatenate([arr1,arr2],axis=0)
np.vstack([arr1,arr2])

水平方向:

np.concatenate([arr1,arr2],axis=1)
np.hstack([arr1,arr2])
import numpy as np
import pandas as pd

arr1=np.ones((3,5))
arr1
Out[5]: 
array([[ 1., 1., 1., 1., 1.],
    [ 1., 1., 1., 1., 1.],
    [ 1., 1., 1., 1., 1.]])
    
arr2=np.random.randn(15).reshape(arr1.shape)
arr2
Out[8]: 
array([[-0.09666833, 1.47064828, -1.94608976, 0.2651279 , -0.32894787],
    [ 1.01187699, 0.39171167, 1.49607091, 0.79216196, 0.33246644],
    [ 1.71266238, 0.86650837, 0.77830394, -0.90519422, 1.55410056]])
    
np.concatenate([arr1,arr2],axis=0) #在纵轴上合并
Out[9]: 
array([[ 1.    , 1.    , 1.    , 1.    , 1.    ],
    [ 1.    , 1.    , 1.    , 1.    , 1.    ],
    [ 1.    , 1.    , 1.    , 1.    , 1.    ],
    [-0.09666833, 1.47064828, -1.94608976, 0.2651279 , -0.32894787],
    [ 1.01187699, 0.39171167, 1.49607091, 0.79216196, 0.33246644],
    [ 1.71266238, 0.86650837, 0.77830394, -0.90519422, 1.55410056]])

np.concatenate([arr1,arr2],axis=1) #在横轴上合并
Out[10]: 
array([[ 1.    , 1.    , 1.    , ..., -1.94608976,
     0.2651279 , -0.32894787],
    [ 1.    , 1.    , 1.    , ..., 1.49607091,
     0.79216196, 0.33246644],
    [ 1.    , 1.    , 1.    , ..., 0.77830394,
    -0.90519422, 1.55410056]])

在pandas中合并两个DataFrame

pandas中通过concat方法实现合并,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组。与numpy不同,这里的两个dataframe要放在一个列表中,即[frame1,frame2]

from pandas import DataFrame

frame1=DataFrame([[1,2,3],[4,5,6]])
frame2=DataFrame([[7,8,9],[10,11,12]])

pd.concat([frame1,frame2], ignore_index=True) # 合并的数组是一个可迭代的列表。
Out[25]: 
  0  1  2
0  1  2  3
1  4  5  6
0  7  8  9
1 10 11 12


pd.concat([frame1,frame2], axis=1, ignore_index=True)
Out[27]: 
  0 1 2  3  4  5
0 1 2 3  7  8  9
1 4 5 6 10 11 12

拉直和重塑

拉直即把一个二维的array变成一个一维的array。默认情况下,Numpy数组是按行优先顺序创建。在空间方面,这就意味着,对于一个二维数字,每行中的数据项是存放在内在中相邻的位置上的。另一种顺序是列优先。

由于历史原因,行优先和列优先又分别被称为C和Fortran顺序。在Numpy中,可以通过关键字参数order=‘C' 和order=‘F' 来实现行优先和列优先。

拉直:

arr=np.arange(15).reshape(3,-1)
arr
Out[29]: 
array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14]])
    
arr.ravel('F') #按照列优先,扁平化。
Out[30]: array([ 0, 5, 10, ..., 4, 9, 14])

arr.ravel('C') # 默认顺序。#按照行优先,扁平化。
Out[31]: array([ 0, 1, 2, ..., 12, 13, 14])

重塑:

Fortran顺序重塑后按列拉直和原数据按列拉直一样。

arr.reshape((5,3),order='F') 
Out[32]: 
array([[ 0, 11, 8],
    [ 5, 2, 13],
    [10, 7, 4],
    [ 1, 12, 9],
    [ 6, 3, 14]])

C顺序重塑后按行拉直和原数据按行拉直一样。

arr.reshape((5,3),order='C')
 Out[33]: 
array([[ 0, 1, 2],
    [ 3, 4, 5],
    [ 6, 7, 8],
    [ 9, 10, 11],
    [12, 13, 14]])

以上这篇numpy和pandas中数组的合并、拉直和重塑实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的startswith和endswith函数使用实例
Aug 25 Python
Python基于有道实现英汉字典功能
Jul 25 Python
Python中常见的数据类型小结
Aug 29 Python
python学习基础之循环import及import过程
Apr 22 Python
python批量修改图片大小的方法
Jul 24 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
python求平均数、方差、中位数的例子
Aug 22 Python
详解python内置模块urllib
Sep 09 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
使用Python画股票的K线图的方法步骤
Jun 28 #Python
连接pandas以及数组转pandas的方法
Jun 28 #Python
python3实现猜数字游戏
Dec 07 #Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 #Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 #Python
使用Python中的reduce()函数求积的实例
Jun 28 #Python
centos 安装Python3 及对应的pip教程详解
Jun 28 #Python
You might like
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
php创建图像具体步骤
2017/03/13 PHP
Smarty模板配置实例简析
2019/07/20 PHP
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
解决pandas 作图无法显示中文的问题
2018/05/24 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
大学毕业感言50字
2014/02/07 职场文书
党支部承诺书
2015/01/20 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
培训感想范文
2015/08/07 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript