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制作最美应用的爬虫
Oct 28 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
Python之list对应元素求和的方法
Jun 28 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
Series和DataFrame使用简单入门
Nov 13 Python
python与mysql数据库交互的实现
Jan 06 Python
Python动态导入模块和反射机制详解
Feb 18 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
python基础教程之缩进介绍
2014/08/29 Python
17个Python小技巧分享
2015/01/23 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python线性回归实战分析
2018/02/01 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python实现名片管理系统
2020/02/14 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
css3的transition属性详解
2014/12/15 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
酒店中秋节促销方案
2014/01/30 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
个人收入证明格式
2015/06/24 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
《三国志》赏析
2019/08/27 职场文书