import numpy as np A = np.array([1, 1, 1]) B = np.array([2, 2, 2]) print(np.vstack((A, B))) # vertical(垂直的) stack(堆) """ [[1,1,1] [2,2,2]] """ C = np.vstack((A,B)) print(A.shape,C.shape) # 从打印出的结果来看,A仅仅是一个拥有3项元素的数组(数列),而合并后得到的C是一个2行3列的矩阵。 # (3,) (2,3) # vertical stack本身属于一种上下合并 # 转置操作 ''' horizontal stack 表示水平线合并 也就是左右合并 ''' D = np.hstack((A,B)) # horizontal stack print(D) # [1,1,1,2,2,2] print(A.shape,D.shape) # (3,) (6,) ''' 说完了array的合并,稍微提及一下转置的操作 当是一维的数组的时候 就无法实现转置 因为他不是一个矩阵 此时就要借助其他函数操作进行转置 ''' print(A[np.newaxis,:]) #可以看到加一个newaxis表示的是加一个维度 # [[1 1 1]] print(A[np.newaxis,:].shape) # (1,3) 表示一行三列的矩阵 print(A[:,np.newaxis]) #可以看到newaixs表示的就是加1 """ [[1] [1] [1]] """ print(A[:,np.newaxis].shape) # (3,1) ''' 结合上面所学的知识可以把它综合起来 ''' print('----分隔-----') A = np.array([1, 1, 1])[:, np.newaxis]#变成一个三行1列的矩阵 B = np.array([2, 2, 2])[:, np.newaxis] C = np.vstack((A, B)) # vertical stack 垂直合并 6行1列 D = np.hstack((A, B)) # horizontal stack 水平合并 3行2列 print(D) """ [[1 2] [1 2] [1 2]] """ print(A.shape, D.shape) # (3,1) (3,2) ''' 当你的合并操作需要针对多个矩阵或序列时,借助concatenate函数可能会让你使用起来比前述的函数更加方便: 涉及到多个矩阵和序列的操作 ''' C = np.concatenate((A,B,B,A),axis=0) print(C) """ array([[1], [1], [1], [2], [2], [2], [2], [2], [2], [1], [1], [1]]) """ D = np.concatenate((A,B,B,A),axis=1) print(D) """ array([[1, 2, 2, 1], [1, 2, 2, 1], [1, 2, 2, 1]]) """
np.vstack((a,b))将数组上下合并
np.hstack((a,b))将数组左右合并
可以有选择性的对数组进行合并操作,输入的参数是一个元组
A[np.newaxis,:]表示增加一个新的维度,因为知道一位数组不是矩阵,无法进行转置
当有多个矩阵或者数列需要合并的时候选择concatenate,可选axis参数