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 相关文章推荐
Django中使用locals()函数的技巧
Jul 16 Python
详解 Python 读写XML文件的实例
Aug 02 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
Python多线程threading模块用法实例分析
May 22 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
java字符串格式化输出实例讲解
Jan 06 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
js计算页面刷新的次数
2009/07/20 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
python实现bitmap数据结构详解
2014/02/17 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python网络编程详解
2017/10/31 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
人力资源经理的岗位职责范本
2014/02/28 职场文书
行政专员求职信范文
2014/05/03 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
python执行js代码的方法
2021/05/13 Python
Python+Appium自动化测试的实战
2021/06/30 Python