合并
hstack(tup):按行合并 【前面有个 h,可以理解为 行,这样方便记忆】
vstack(tup):按列合并
参数虽然是 tuple,但是 list 也行,可以合并2个或者多个数组。
a=np.floor(10*np.random.rand(2,2)) b=np.floor(10*np.random.rand(2,2)) ### hstack()在行上合并 np.hstack((a,b)) # array([[ 8., 5., 1., 9.], # [ 1., 6., 8., 5.]]) #### vstack()在列上合并 np.vstack((a,b)) # array([[ 8., 5.], # [ 1., 6.], # [ 1., 9.], # [ 8., 5.]]) print np.vstack([a,b,b]) # list 参数 # [[ 1. 4.] a # [ 9. 5.] # [ 7. 6.] b # [ 2. 9.] # [ 7. 6.] b # [ 2. 9.]]
追加
append(arr, values, axis=None):可以追加数组,也可以追加数字,追加数组相当于合并。
arr 分为一维和二维
一维:只有一个方向,故只能在一个维度上追加
二维:两个二维数组,拼接方向上 shape 必须一致
二者皆可追加数字,不管前面的shape是什么,注意输出都是一维数组。
二维1表示按行拼接,0表示按列拼接,不好记,到时候试试算了。
## 一维 # 一维相当于只有一个维度,故不能在另一个维度上操作 y = np.array([1, 2]) z = np.array([3, 4]) out1 = np.append(y, z, axis=0) print(out1) # [1 2 3 4] # out2 = np.append(y, z, axis=1) # numpy.AxisError: axis 1 is out of bounds for array of dimension 1 # print(out2) # 直接拼数字 print np.append(y, 3) # [1 2 3] ## 二维 y = np.array([[1, 2]]) z = np.array([[3, 4]]) out3 = np.append(y, z, axis=0) print(out3) # [[1 2] # [3 4]] out4 = np.append(y, z, axis=1) print(out4) # [[1 2 3 4]] m = np.array([[3, 4, 5]]) out5 = np.append(y, m, axis=1) # [[1 2 3 4 5]] print(out5) # 直接拼数字,输出为一维 print np.append(y, 3) # [1 2 3] print np.append(np.empty([0, 0]), 3) # [3.]