跳至正文
View Categories

< 1 min read

主要内容 #

  1. 了解并掌握Numpy array的合并
  2. 掌握Numpy array的分割

1. Numpy array的合并 #

对于一个array的合并,我们可以想到按行、按列等多种方式进行合并。

  • (1):np.vstack()

vertical stack,即np.vstack()本身属于一种上下合并,即对括号中的两个整体进行对应操作。
示例如下:

import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])
print(np.vstack((A,B)))

可以通过shape函数来进行属性探究:

C = np.vstack((A,B))      
print(A.shape,C.shape)

利用shape函数可以让我们很容易地知道A和C的属性,从打印出的结果来看,A仅仅是一个拥有3项元素的数组(数列),而合并后得到的C是一个2行3列的矩阵。

  • (2):np.hstack()

np.hstack()是左右合并结构:

D = np.hstack((A,B))   # horizontal stack
print(D)
# [1,1,1,2,2,2]
print(A.shape,D.shape)
# (3,) (6,)

D本身来源于A,B两个数列的左右合并,而且新生成的D本身也是一个含有6项元素的序列。

  • (3):np.concatenate()

当你的合并操作需要针对多个矩阵或序列时,借助concatenate函数可能会让你使用起来比前述的函数更加方便:

C = np.concatenate((A,B,B,A),axis=0)
print(C)

axis参数很好的控制了矩阵的纵向或是横向打印,axis=0表示按行进行拼接,axis=1表示按列进行拼接,相比较vstack和hstack函数显得更加方便。

2. Numpy array 分割:split #

首先,构建一个3行4列的array

import numpy as np
A=np.arange(12).reshape((3,4))
print(A)
  • (1):纵向分割
print(np.split(A, 2, axis=1))
  • (2):横向分割
print(np.split(A, 3, axis=0))
  • (3):不等量分割

在机器学习时经常会需要将数据做不等量的分割,因此解决办法为np.array_split()

print(np.array_split(A, 3, axis=1))

3. 小结 #

  • 熟悉并掌握numpy array的合并
  • 熟悉掌握numpy array的分割

习题 #