对numpy和pandas中数组的合并和拆分详解


Posted in Python onApril 11, 2018

合并

numpy中

numpy中可以通过concatenate,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组。

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]])
np.hstack([arr1,arr2]) # 水平 horizon 
np.vstack([arr1,arr2]) # 垂直 vertical

pandas中

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

拆分

默认情况下,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()
Out[31]: array([ 0, 1, 2, ..., 12, 13, 14])
arr.reshape((5,3),order='F') # Fortran 顺序
Out[32]: 
array([[ 0, 11, 8],
    [ 5, 2, 13],
    [10, 7, 4],
    [ 1, 12, 9],
    [ 6, 3, 14]])
 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写的Socks5协议代理服务器
Aug 06 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
深入理解Django中内置的用户认证
Oct 06 Python
有趣的python小程序分享
Dec 05 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
Python2包含中文报错的解决方法
Jul 09 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
pycharm设置当前工作目录的操作(working directory)
Feb 14 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 #Python
深入浅析python with语句简介
Apr 11 #Python
python实现微信自动回复功能
Apr 11 #Python
Python实现检测文件MD5值的方法示例
Apr 11 #Python
python 输出上个月的月末日期实例
Apr 11 #Python
Python简单计算文件MD5值的方法示例
Apr 11 #Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 #Python
You might like
基于mysql的论坛(2)
2006/10/09 PHP
转PHP手册及PHP编程标准
2006/12/17 PHP
discuz安全提问算法
2007/06/06 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
Javascript !!的作用
2008/12/04 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
Web开发之JavaScript
2012/03/29 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
python实现UDP协议下的文件传输
2020/03/20 Python
解决django FileFIELD的编码问题
2020/03/30 Python
介绍一下Ruby的多线程处理
2013/02/01 面试题
店面销售职位的职责
2014/03/09 职场文书
结婚通知短信大全
2015/04/17 职场文书
送达通知书
2015/04/25 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
MySQL新手入门进阶语句汇总
2022/09/23 MySQL