本文簡要介紹 python 語言中 numpy.take
的用法。
用法:
numpy.take(a, indices, axis=None, out=None, mode='raise')
沿軸從數組中獲取元素。
當axis不是None時,這個函數和“fancy” indexing(使用數組索引數組)做同樣的事情;但是,如果您需要沿給定軸的元素,它會更容易使用。諸如
np.take(arr, indices, axis=3)
之類的調用等效於arr[:,:,:,indices,...]
。在沒有花哨的索引的情況下進行解釋,這相當於
ndindex
的以下使用,它將ii
、jj
和kk
中的每一個設置為索引元組:Ni, Nk = a.shape[:axis], a.shape[axis+1:] Nj = indices.shape for ii in ndindex(Ni): for jj in ndindex(Nj): for kk in ndindex(Nk): out[ii + jj + kk] = a[ii + (indices[jj],) + kk]
- a: 數組 (Ni…, M, Nk…)
源數組。
- indices: 數組 (Nj…)
要提取的值的索引。
還允許索引的標量。
- axis: 整數,可選
選擇值的軸。默認情況下,使用扁平化的輸入數組。
- out: ndarray,可選(Ni…,Nj…,Nk…)
如果提供,結果將被放置在這個數組中。它應該具有適當的形狀和數據類型。請注意,如果 mode='raise'; 則輸出總是被緩衝。使用其他模式以獲得更好的性能。
- mode: {‘raise’, ‘wrap’, ‘clip’},可選
指定越界索引的行為方式。
‘raise’ - 引發錯誤(默認)
‘wrap’ - 環繞
‘clip’ - 剪輯到範圍
‘clip’ 模式意味著所有過大的索引都將替換為尋址沿該軸的最後一個元素的索引。請注意,這會禁用負數索引。
- out: ndarray (Ni…, Nj…, Nk…)
返回的數組具有與 a 相同的類型。
參數:
返回:
注意:
通過消除上述說明中的內部循環,並使用
s_
構建簡單的切片對象,take
可以通過對每個一維切片應用花式索引來表示:Ni, Nk = a.shape[:axis], a.shape[axis+1:] for ii in ndindex(Ni): for kk in ndindex(Nj): out[ii + s_[...,] + kk] = a[ii + s_[:,] + kk][indices]
因此,它等效於(但比)以下使用
apply_along_axis
:out = np.apply_along_axis(lambda a_1d: a_1d[indices], axis, a)
例子:
>>> a = [4, 3, 5, 7, 6, 8] >>> indices = [0, 1, 4] >>> np.take(a, indices) array([4, 3, 6])
在此示例中,如果 a 是 ndarray,則可以使用 “fancy” 索引。
>>> a = np.array(a) >>> a[indices] array([4, 3, 6])
如果
indices
不是一維的,則輸出也具有這些維度。>>> np.take(a, [[0, 1], [2, 3]]) array([[4, 3], [5, 7]])
相關用法
- Python numpy take_along_axis用法及代碼示例
- Python numpy tanh用法及代碼示例
- Python numpy tan用法及代碼示例
- Python numpy trim_zeros用法及代碼示例
- Python numpy testing.rundocs用法及代碼示例
- Python numpy testing.assert_warns用法及代碼示例
- Python numpy trace用法及代碼示例
- Python numpy testing.assert_array_almost_equal_nulp用法及代碼示例
- Python numpy tri用法及代碼示例
- Python numpy testing.assert_array_less用法及代碼示例
- Python numpy testing.assert_raises用法及代碼示例
- Python numpy true_divide用法及代碼示例
- Python numpy transpose用法及代碼示例
- Python numpy testing.assert_almost_equal用法及代碼示例
- Python numpy tile用法及代碼示例
- Python numpy testing.assert_approx_equal用法及代碼示例
- Python numpy testing.assert_allclose用法及代碼示例
- Python numpy testing.decorators.slow用法及代碼示例
- Python numpy trapz用法及代碼示例
- Python numpy testing.suppress_warnings用法及代碼示例
- Python numpy testing.assert_string_equal用法及代碼示例
- Python numpy testing.run_module_suite用法及代碼示例
- Python numpy testing.assert_array_max_ulp用法及代碼示例
- Python numpy testing.assert_equal用法及代碼示例
- Python numpy triu_indices用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.take。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。