0
假設我有一個具有給定shape
的二維numpy數組,我希望根據值的位置獲得滿足謂詞的值的視圖。也就是說,如果x
和y
是相應的列和行索引,並且謂詞爲x>y
,則函數應只返回列索引大於行索引的數組值。根據位置謂詞過濾numpy數組
簡單的方法是雙循環,但我想可能更快(vectorized也許?)方法?
有沒有更好的方法?
假設我有一個具有給定shape
的二維numpy數組,我希望根據值的位置獲得滿足謂詞的值的視圖。也就是說,如果x
和y
是相應的列和行索引,並且謂詞爲x>y
,則函數應只返回列索引大於行索引的數組值。根據位置謂詞過濾numpy數組
簡單的方法是雙循環,但我想可能更快(vectorized也許?)方法?
有沒有更好的方法?
在一般情況下,你可以通過建立對應於行/列索引的開放網格做到這一點,應用您的謂詞取得布林面具,然後索引到你的陣列使用這種面膜:
A = np.zeros((10,20))
y, x = np.ogrid[:A.shape[0], :A.shape[1]]
mask = x > y
A[mask] = 1
您的具體示例恰好是上三角形 - 您可以使用np.triu
獲取它的副本,或者您可以使用np.triu_indices
獲取相應的行/列索引。
我知道meshgrid會幫助我,但我不知道如何。謝謝!。 *這個例子只是一個特例。 –