亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Numpy:我如何應用矢量蒙版?

Numpy:我如何應用矢量蒙版?

慕娘9325324 2023-02-22 19:18:33
我有一個 numpy 數組,它是一個向量列表,比如arr1 = [ [ 1, 2 ], [ 2, 2 ], [ 5, 3 ], [ 9, -1 ], [ 6, 3 ], ... ]對應于 x,y 值對。我想使用 x 和 y 分量的標準設置掩碼,例如 0 < x < 4 和 0 < y < 7,這樣上面的掩碼看起來像:[ [ True, True ], [ True, True ], [ False, False ], [ False, False ], [ False, False ], ... ]換句話說,對于數組中的每個向量,我希望掩碼的兩個分量都具有相同的真值,并且只有在True同時滿足 x 和 y 的條件時才返回。我試過類似的東西:masked = numpy.ma.array(arr1, mask= [0<arr1[:,0]<4 & 0<arr1[:,1]<7, 0<arr1[:,0]<4 & 0<arr1[:,1]<7])但它告訴我“具有多個元素的數組的真值是不明確的?!?nbsp;有沒有一種方法可以在不使用循環或 if else 的情況下簡潔地執行此操作?
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

使用輸入數組:

print(arr1)
array([[ 1,  2],
       [ 2,  2],
       [ 5,  3],
       [ 9, -1],
       [ 6,  3]])

您可以單獨檢查每個列的條件(請注意,鏈式比較在 NumPy 中不起作用)。然后對兩個條件進行按位與并廣播到數組的形狀:

x = arr1[:,0] 
y = arr1[:,1] 

c1 = (x>0)&(x<4)
c2 = (y>0)&(y<7)

np.broadcast_to((c1&c2)[:,None], arr1.shape)
array([[ True,  True],
       [ True,  True],
       [False, False],
       [False, False],
       [False, False]])


查看完整回答
反對 回復 2023-02-22
  • 1 回答
  • 0 關注
  • 78 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號