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中的继承和多态的概念
Apr 27 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
python之Socket网络编程详解
Sep 29 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
dataframe设置两个条件取值的实例
Apr 12 Python
python中pip的安装与使用教程
Aug 10 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
Flask框架钩子函数功能与用法分析
Aug 02 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
Python configparser模块常用方法解析
May 22 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 生成饼图 三维饼图
2009/09/28 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
零基础php编程好学吗
2019/10/11 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
深入理解Promise.all
2018/08/08 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
Python lxml模块安装教程
2015/06/02 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python挖矿算力测试程序详解
2019/07/03 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python定时器线程池原理详解
2020/02/26 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
祖国在我心中演讲稿
2014/01/15 职场文书
金秋助学感谢信
2015/01/21 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
大学体育课感想
2015/08/10 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android