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中的文件和目录操作实现代码
Mar 13 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
详解python logging日志传输
Jul 01 Python
celery在python爬虫中定时操作实例讲解
Nov 27 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源代码
2013/06/26 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Django实现学员管理系统
2019/02/26 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python与pycharm有何区别
2020/07/01 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
工业学校毕业生自荐信范文
2014/01/03 职场文书
公司同意接收函
2014/01/13 职场文书
2015年护士节活动总结
2015/02/10 职场文书
北大自主招生自荐信
2015/03/04 职场文书
大学军训口号大全
2015/12/24 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
PHP使用非对称加密算法RSA
2021/04/21 PHP