numpy.mask_indices#

numpy.mask_indices(n, mask_func, k=0)[原始碼]#

傳回索引以存取 (n, n) 陣列,給定一個遮罩函數。

假設 mask_func 是一個函數,對於大小為 (n, n) 的方形陣列 a,具有可能的偏移量參數 k,當呼叫為 mask_func(a, k) 時,會傳回一個新的陣列,在特定位置為零(如 triutril 等函數正是如此)。那麼此函數會傳回非零值所在位置的索引。

參數:
n整數

傳回的索引將適用於存取形狀為 (n, n) 的陣列。

mask_func可呼叫物件

一個函數,其呼叫簽名與 triutril 類似。也就是說,mask_func(x, k) 傳回一個布林陣列,形狀與 x 相同。k 是函數的可選參數。

k純量

一個可選參數,會傳遞給 mask_func。如 triutril 等函數接受第二個參數,該參數被解釋為偏移量。

傳回值:
indices陣列的元組。

n 個索引陣列的元組,對應於 mask_func(np.ones((n, n)), k) 為 True 的位置。

範例

>>> import numpy as np

這些索引可讓您存取任何 3x3 陣列的上三角部分

>>> iu = np.mask_indices(3, np.triu)

例如,如果 a 是一個 3x3 陣列

>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> a[iu]
array([0, 1, 2, 4, 5, 8])

偏移量也可以傳遞給遮罩函數。這會取得從主對角線右側第一個對角線開始的索引

>>> iu1 = np.mask_indices(3, np.triu, 1)

藉此,我們現在僅提取三個元素

>>> a[iu1]
array([1, 2, 5])