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

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

在 numpy 數組中將 1 更改為 0 并將 0 更改為 1 而無需循環

在 numpy 數組中將 1 更改為 0 并將 0 更改為 1 而無需循環

萬千封印 2022-03-05 15:12:03
假設我有一個 numpy 數組,我想將所有 1 交換為 0,將所有 0 交換為 1(該數組將具有其他值,并且 0 和 1 沒有什么特別之處)。當然,我可以循環遍歷數組并逐個更改它。您可以推薦使用一種有效的方法嗎?np.where() 方法是否有此操作的選項?
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

這是一種使用np.where, 并在XOR給定值是0或時按位取值的方法1:


np.where((a==0)|(a==1), a^1, a)

例如:


a = np.array([[0,1,2,1], [1,2,0,3]])

print(a)

array([[0, 1, 2, 1],

       [1, 2, 0, 3]])


np.where((a==0)|(a==1), a^1, a)


array([[1, 0, 2, 0],

       [0, 2, 1, 3]])


查看完整回答
反對 回復 2022-03-05
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

這是 np.where 的一個不太聰明的選擇,只是將它用于索引:


where_0 = np.where(arr == 0)

where_1 = np.where(arr == 1)


arr[where_0] = 1

arr[where_1] = 0

如果您對其他值有更多了解(例如它們都是小數字),可能會有更多選擇,但這是最簡單的。


查看完整回答
反對 回復 2022-03-05
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

a^(a&1==a)

例如


a = np.arange(-3, 4)

a^(a&1==a)

# array([-3, -2, -1,  1,  0,  2,  3])


查看完整回答
反對 回復 2022-03-05
  • 3 回答
  • 0 關注
  • 1737 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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