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 相关文章推荐
动态创建类实例代码
Oct 07 Python
python+mysql实现简单的web程序
Sep 11 Python
python中PIL安装简单教程
Apr 21 Python
python实现换位加密算法的示例
Oct 14 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
python实现五子棋小游戏
Mar 25 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
Python实现搜索算法的实例代码
Jan 02 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
在django中form的label和verbose name的区别说明
May 20 Python
在pycharm中创建django项目的示例代码
May 28 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
JS中跳出循环的示例代码
2017/09/14 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
layui使用数据表格实现购物车功能
2019/07/26 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
岗位职责说明书
2014/05/07 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
就业证明函
2015/06/17 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书