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 psutil模块简单使用实例
Apr 28 Python
浅析Python编写函数装饰器
Mar 18 Python
教你用Python写安卓游戏外挂
Jan 11 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
python库matplotlib绘制坐标图
Oct 18 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
Python用input输入列表的实例代码
Feb 07 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
利用python画出AUC曲线的实例
Feb 28 Python
python 实现任务管理清单案例
Apr 25 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
详解Django中的FBV和CBV对比分析
Mar 01 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
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
详解在React里使用"Vuex"
2018/04/02 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
简单使用Python自动生成文章
2014/12/25 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
民族团结先进个人材料
2014/02/05 职场文书
大四毕业生自荐书
2014/07/05 职场文书
政工例会汇报材料
2014/08/26 职场文书
综治工作心得体会
2014/09/11 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
React实现动效弹窗组件
2021/06/21 Javascript