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,:] = values
與arr[:,[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]])