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版
Dec 07 Python
Python跳出循环语句continue与break的区别
Aug 25 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
pyshp创建shp点文件的方法
Dec 31 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
Python 3.8新特征之asyncio REPL
May 28 Python
使用python实现ftp的文件读写方法
Jul 02 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
python opencv如何实现图片绘制
Jan 19 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
python dict如何定义
Sep 02 Python
python 实现有道翻译功能
Feb 26 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
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
python 域名分析工具实现代码
2009/07/15 Python
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
python3+PyQt5实现柱状图
2018/04/24 Python
Python中字符串与编码示例代码
2019/05/20 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
教师自我评价范例
2013/09/24 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
婚前财产公证书
2014/04/10 职场文书
连带责任保证书
2014/04/29 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
财产保全担保书
2015/01/20 职场文书
让生命充满爱观后感
2015/06/08 职场文书
关于环保的广播稿
2015/12/17 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书