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 相关文章推荐
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
Python3读取文件常用方法实例分析
May 22 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
windows下python安装pip方法详解
Feb 10 Python
python梯度下降算法的实现
Feb 24 Python
微信小程序调用python模型
Apr 21 Python
详解PyTorch模型保存与加载
Apr 28 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
php正则
2006/07/07 PHP
多文件上传的例子
2006/10/09 PHP
PHP分页显示制作详细讲解
2008/11/19 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
Node.js JSON模块用法实例分析
2019/01/04 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
详解Python中的join()函数的用法
2015/04/07 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
python实现kMeans算法
2017/12/21 Python
微信跳一跳游戏python脚本
2020/04/01 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
Python变量类型知识点总结
2019/02/18 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
农村党支部先进事迹
2014/01/14 职场文书
给学校的建议书
2014/03/12 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书