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中的len()函数的使用
Apr 07 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
python算法题 链表反转详解
Jul 02 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
python将数据插入数据库的代码分享
Aug 16 Python
python创建文本文件的简单方法
Aug 30 Python
聊聊python中的异常嵌套
Sep 01 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
Django+Celery实现定时任务的示例
Jun 23 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安全防范技巧分享
2011/11/03 PHP
浅谈php自定义错误日志
2015/02/13 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
Vue-路由导航菜单栏的高亮设置方法
2018/03/17 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
python读取word文档的方法
2015/05/09 Python
Python中字符串的处理技巧分享
2016/09/17 Python
python list转矩阵的实例讲解
2018/08/04 Python
python学习笔记之多进程
2020/08/06 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
大学生创业计划书的范文
2014/01/07 职场文书
化工专业求职信
2014/07/01 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
假期安全教育广播稿
2014/10/04 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
经济纠纷起诉状
2015/05/20 职场文书
感恩的心主题班会
2015/08/12 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL