numpy 添加数组元素数据 np.append np.insert

np.insert(arr, obj, values, axis=None)

在指定轴的指定index上插入数据。
obj尽量使用中括号括起来的形式。

  • 当只有一个整数,[N],将values整体插入在axis轴上N前。
arr = np.arange(9).reshape(3,3)
arr2 = np.arange(10,16).reshape(3,2)
arr
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
arr2
array([[10, 11],
       [12, 13],
       [14, 15]])
       
np.insert(arr,[1],arr2,axis=1)
array([[ 0, 10, 11,  1,  2],
       [ 3, 12, 13,  4,  5],
       [ 6, 14, 15,  7,  8]])
  • 当是一系列整数时,[N1,N2,N3,N4…],每一个N都是arr在axis上的index,会把values均分并按照中括号内的index插入。就是N1,N2,N3,N4整数数量应该和values在axis方向上的形状一样,这样就会把values每一行或每一列插入指定位置。N1,N2,N3,N4大小需要在arr的axis形状范围内,大小和顺序不限定。

np.insert(arr,[1,0],arr2,axis=1)
array([[11,  0, 10,  1,  2],
       [13,  3, 12,  4,  5],
       [15,  6, 14,  7,  8]])

np.append(arr, values, axis=None)
根据给定的轴向arr添加元素。

  • 当不指明axis时,会把arr数组和values先flattern。然后将values添加到后面,返回一维数组。
  • 当给定axis为1后者0时,沿着给定轴方向添加元素。此时,除了给定的轴方向,其他维度必须保持形状一致。

**Tips:**感觉这个就是np.concatenate的低配版。因为,它只能操作两个数组,而np.concatenate是不限制的,处理a sequence of arrays。

举例:

arr = np.arange(9).reshape(3,3)
arr2 = np.array([[1,2],[2,2],[3,2]])
np.append(arr,arr2,axis=1)
array([[0, 1, 2, 1, 2],
       [3, 4, 5, 2, 2],
       [6, 7, 8, 3, 2]])

你可能感兴趣的:(numpy,python,numpy)