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中利用生成器实现的并发编程
May 04 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
python线程池threadpool使用篇
Apr 27 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
python pyg2plot的原理知识点总结
Feb 28 Python
python spilt()分隔字符串的实现示例
May 21 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
php导出excel格式数据问题
2014/03/11 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
PHP实现小偷程序实例
2016/10/31 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
phpinfo的知识点总结
2019/10/10 PHP
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
vue登录注册实例详解
2019/09/14 Javascript
在Linux下调试Python代码的各种方法
2015/04/17 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python使用mysql数据库示例代码
2017/05/21 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
禁毒宣传标语
2014/06/19 职场文书
优秀高中学生评语
2014/12/30 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS