基本上我希望這個鏈式切片覆寫值(將第一個元素顯示為 2 而不是 1)
tst = np.array([1,2,3,4])
msk1 = [True, False, True, False]
msk2 = [True, False]
tst[msk1][msk2] = 2
tst
> array([1, 2, 3, 4])
uj5u.com熱心網友回復:
這個問題是tst[msk1]切片的副本,而不是視圖。
您可以使用它來檢查它tst[msk1].base不回傳任何內容(如果是視圖,它將回傳原始陣列)。因此,當您進一步切片和修改時tst[msk1][mask2] = 2,實際上是在修改記憶體中的副本,而不是tst。
據我所知,你不能用花哨的索引強制視圖,所以你想要的不是直接可以實作的。
一種解決方法可能是獲取第一個掩碼的索引,然后使用第二個掩碼對它們進行切片:
idx = np.where(msk1)[0][msk2]
tst[idx] = 2
# print(tst)
# [2 2 3 4]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403496.html
標籤:
