numpy.insert#

numpy.insert(arr, obj, values, axis=None)[原始碼]#

沿著給定的軸,在給定的索引之前插入值。

參數:
arrarray_like

輸入陣列。

objslice, int, array-like of ints or bools

定義索引或多個索引的物件,在這些索引之前插入 values

在 2.1.2 版本中變更: 布林索引現在被視為要插入元素的遮罩,而不是轉換為整數 0 和 1。

obj 是單個純量或具有一個元素的序列時,支援多次插入(類似於多次呼叫 insert)。

valuesarray_like

要插入到 arr 中的值。如果 values 的類型與 arr 的類型不同,則 values 會轉換為 arr 的類型。values 的形狀應使 arr[...,obj,...] = values 合法。

axisint, optional

沿著哪個軸插入 values。如果 axis 為 None,則先將 arr 平坦化。

返回:
outndarray

arr 的副本,其中插入了 values。請注意,insert 不會就地發生:會返回一個新陣列。如果 axis 為 None,則 out 是一個平坦化的陣列。

另請參閱

append

在陣列末尾附加元素。

concatenate

沿著現有軸連接陣列序列。

delete

從陣列中刪除元素。

註解

請注意,對於更高維度的插入,obj=0 的行為與 obj=[0] 非常不同,就像 arr[:,0,:] = valuesarr[:,[0],:] = values 不同一樣。這是因為基本索引和進階索引之間的差異。

範例

>>> import numpy as np
>>> a = np.arange(6).reshape(3, 2)
>>> a
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> np.insert(a, 1, 6)
array([0, 6, 1, 2, 3, 4, 5])
>>> np.insert(a, 1, 6, axis=1)
array([[0, 6, 1],
       [2, 6, 3],
       [4, 6, 5]])

序列和純量之間的差異,展示 obj=[1] 的行為與 obj=1 的不同之處

>>> np.insert(a, [1], [[7],[8],[9]], axis=1)
array([[0, 7, 1],
       [2, 8, 3],
       [4, 9, 5]])
>>> np.insert(a, 1, [[7],[8],[9]], axis=1)
array([[0, 7, 8, 9, 1],
       [2, 7, 8, 9, 3],
       [4, 7, 8, 9, 5]])
>>> np.array_equal(np.insert(a, 1, [7, 8, 9], axis=1),
...                np.insert(a, [1], [[7],[8],[9]], axis=1))
True
>>> b = a.flatten()
>>> b
array([0, 1, 2, 3, 4, 5])
>>> np.insert(b, [2, 2], [6, 7])
array([0, 1, 6, 7, 2, 3, 4, 5])
>>> np.insert(b, slice(2, 4), [7, 8])
array([0, 1, 7, 2, 8, 3, 4, 5])
>>> np.insert(b, [2, 2], [7.13, False]) # type casting
array([0, 1, 7, 0, 2, 3, 4, 5])
>>> 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]])