对numpy和pandas中数组的合并和拆分详解

合并

numpy中

numpy中可以通过concatenate,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组。

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

np.hstack([arr1,arr2]) # 水平 horizon

np.vstack([arr1,arr2]) # 垂直 vertical

pandas中

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

拆分

默认情况下,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()

Out[31]: array([ 0, 1, 2, ..., 12, 13, 14])

arr.reshape((5,3),order='F') # Fortran 顺序

Out[32]:

array([[ 0, 11, 8],

[ 5, 2, 13],

[10, 7, 4],

[ 1, 12, 9],

[ 6, 3, 14]])

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中数组的合并和拆分详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是 对numpy和pandas中数组的合并和拆分详解 的全部内容, 来源链接: utcz.com/z/324406.html

回到顶部