[英]Is there a 2-D "where" in numpy?
這似乎是一個奇怪的問題,但它歸結為一個非常簡單的操作,我找不到 numpy 的等效項。 我查看了np.where
以及許多其他操作,但找不到執行此操作的任何內容:
a = np.array([1,2,3])
b = np.array([1,2,3,4])
c = np.array([i<b for i in a])
output 是一個二維數組 (3,4),由比較每個值的布爾值組成。
如果你問如何在沒有循環的情況下獲得c
,試試這個
# make "a" a column vector
# > broadcasts to produce a len(a) x len(b) array
c = b > a[:, None]
c
array([[False, True, True, True],
[False, False, True, True],
[False, False, False, True]])
您可以擴展其他答案中的方法以獲取a
和b
的值。 給定一個面具
c = b > a[:, None]
您可以使用np.where
或np.nonzero
提取每個維度的索引:
row, col = np.nonzero(c)
並使用索引獲取相應的值:
ag = a[row]
bg = b[col]
結果中可能會重復a
和b
的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.