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中模块的__all__属性详解
Oct 26 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
python实践项目之监控当前联网状态详情
May 23 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
python3注册全局热键的实现
Mar 22 Python
Python unittest框架操作实例解析
Apr 13 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
Python通用唯一标识符uuid模块使用案例
Sep 10 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
LeetCode189轮转数组python示例
Aug 05 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线程的内存回收问题
2016/07/08 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
js自定义回调函数
2015/12/13 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
谈谈如何手动释放Python的内存
2016/12/17 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
python装饰器练习题及答案
2019/11/01 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
机械设计专业应届生求职信
2013/11/21 职场文书
环境工程专业自荐信
2014/03/03 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
JavaScript异步操作中串行和并行
2021/11/20 Javascript