numpy.insert

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.insert.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

numpy.insert(arr, obj, values, axis=None)[source]

在给定的索引之前沿给定轴插入值。

参数:

arr:array_like

输入数组。

obj:int,slice或ints序列

定义插入之前的索引的对象。

版本1.8.0中的新功能。

obj是单个标量或具有一个元素的序列(类似于调用插入多次)时支持多次插入。

:array_like

要插入arr的值。如果的类型不同于arr的类型,则被转换为arr的类型。的形状应使arr [...,obj,...] = 值 t4 >是合法的。

axis:int,可选

要插入值的轴如果axis为None,则首先平铺arr

返回:

out:ndarray

插入了arr的副本。请注意,insert不会就地发生:返回一个新的数组。如果axis为None,则out是一个展平的数组。

也可以看看

append
在数组末尾追加元素。
concatenate
沿现有轴连接数组序列。
delete
从数组中删除元素。

笔记

注意,对于高维插入obj = 0obj = [0]非常不同,就像arr [:,0 ,:] = values t2 >与arr [:,[0],:] =值不同。

例子

>>> 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, 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, 6, 2, 2, 3, 3])
>>> np.insert(b, slice(2, 4), [5, 6])
array([1, 1, 5, 2, 6, 2, 3, 3])
>>> np.insert(b, [2, 2], [7.13, False]) # type casting
array([1, 1, 7, 0, 2, 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]])