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 20 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
python中比较两个列表的实例方法
Jul 04 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 Python
python用海龟绘图写贪吃蛇游戏
Jun 18 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP 转义使用详解
2013/07/15 PHP
php中JSON的使用与转换
2015/01/14 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
python开发之thread线程基础实例入门
2015/11/11 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
python字符串的index和find的区别详解
2020/06/20 Python
python collections模块的使用
2020/10/16 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
简单的项目建议书模板
2014/03/12 职场文书
2014年政工师工作总结
2014/12/18 职场文书
525心理健康活动总结
2015/05/08 职场文书
消防验收申请报告
2015/05/15 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python