簡體   English   中英

numpy 中是否存在二維“位置”?

[英]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]])

您可以擴展其他答案中的方法以獲取ab的值。 給定一個面具

c = b > a[:, None]

您可以使用np.wherenp.nonzero提取每個維度的索引:

row, col = np.nonzero(c)

並使用索引獲取相應的值:

ag = a[row]
bg = b[col]

結果中可能會重復ab的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM