主要内容 #
- 了解并掌握Numpy array的合并
- 掌握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的分割
习题 #
无