numpy和pandas中数组的合并、拉直和重塑实例

作者:jran_ml 时间:2022-06-28 02:55:07 

合并

在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]])

来源:https://blog.csdn.net/zhanshirj/article/details/73302401

标签:numpy,pandas,合并,拉直,重塑
0
投稿

猜你喜欢

  • Dreamweaver给你的网页盖个章

    2008-02-03 11:35:00
  • Keras搭建Efficientdet目标检测平台的实现思路

    2022-01-18 21:07:31
  • python入门:argparse浅析 nargs='+'作用

    2023-06-26 15:52:58
  • python中%格式表达式实例用法

    2022-02-05 06:59:02
  • spring学习JdbcTemplate数据库事务管理

    2024-01-28 10:46:13
  • python爬虫URL重试机制的实现方法(python2.7以及python3.5)

    2023-08-06 07:51:43
  • vue实现轮播图帧率播放

    2024-04-28 09:24:38
  • OAuth 2.0 概念及授权流程梳理

    2023-06-28 02:41:28
  • 用ASP读取/写入UTF-8编码格式的文件

    2007-08-20 09:29:00
  • vue监听路由变化的几种方式小结

    2024-05-21 10:28:41
  • python字符串编码识别模块chardet简单应用

    2021-10-03 15:09:57
  • php的对象传值与引用传值代码实例讲解

    2023-11-06 08:42:37
  • 一文带你搞懂Python中的文件操作

    2023-07-20 14:00:52
  • python烟花效果的代码实例

    2022-09-01 05:42:41
  • MySQL中XML数据的XPath支持

    2009-12-15 21:57:00
  • conn.execute的用法

    2008-07-03 12:58:00
  • Go语言实现简单留言板的方法

    2024-02-12 05:51:42
  • 程序员的七种武器

    2008-11-01 17:13:00
  • go之如何设置GOROOT和GOPATH

    2023-07-19 21:27:24
  • 详解python爬虫系列之初识爬虫

    2023-11-21 04:09:41
  • asp之家 网络编程 m.aspxhome.com