numpy.insert
numpy.insert(arr, obj, values, axis=None) [source]
沿给定轴在给定索引之前插入值。
参数 : | arr :array_like 输入数组。 obj : 定义在其之前插入值的一个或多个索引的对象。 1.8.0版中的新功能。 当obj是单个标量或具有一个元素的序列时, 支持多次插入(类似于多次调用insert)。 values :array_like 要插入到arr中的值。 如果值的类型与arr的类型不同, 则将值转换为arr的类型。 值的形状应使 axis : 沿其插入值的轴。 如果axis为None,则arr首先扁平。 |
返回值 : | out :ndarray 插入了值的arr副本。 请注意, 返回一个新数组。 如果axis为None,则out是一个扁平数组。 |
Notes
请注意,对于高维插入,obj = 0的行为与obj = [0]的行为非常不同,就像arr [:,0,:] = values 与arr [:,[0],:] = values是不同的一样。
例子
>>> a = np.array([[1, 1], [2, 2], [3, 3]])
>>> a
array([[1, 1],
[2, 2],
[3, 3]])
>>> np.insert(a, 1, 5)
array([1, 5, 1, ..., 2, 3, 3])
>>> np.insert(a, 1, 5, axis=1)
array([[1, 5, 1],
[2, 5, 2],
[3, 5, 3]])
序列和标量之间的区别:
>>> np.insert(a, [1], [[1],[2],[3]], axis=1)
array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
>>> np.array_equal(np.insert(a, 1, [1, 2, 3], axis=1),
... np.insert(a, [1], [[1],[2],[3]], axis=1))
True
>>> b = a.flatten()
>>> b
array([1, 1, 2, 2, 3, 3])
>>> np.insert(b, [2, 2], [5, 6])
array([1, 1, 5, ..., 2, 3, 3])
>>> np.insert(b, slice(2, 4), [5, 6])
array([1, 1, 5, ..., 2, 3, 3])
>>> np.insert(b, [2, 2], [7.13, False]) # type casting
array([1, 1, 7, ..., 2, 3, 3])
>>> x = np.arange(8).reshape(2, 4)
>>> idx = (1, 3)
>>> np.insert(x, idx, 999, axis=1)
array([[ 0, 999, 1, 2, 999, 3],
[ 4, 999, 5, 6, 999, 7]])