我有一個表示二進制影像的二維陣列。
我愿意:
ndxs=np.argwhere(obj_img==0)
將索引陣列放入二維影像陣列中,然后我可以使用它nan通過以下方式用值替換那里的 0 :
obj_img[ndxs]=np.nan
但是,當我執行此操作時,會收到與此類似的錯誤, IndexError: index 22 is out of bounds for axis 0 with size 22
我將其追溯到 ndxs 的二維陣列在 中的解釋方式obj_img[ndxs],但我不明白為什么。如果我改為這樣做,
obj_img[ndxs[:,0],ndxs[:,1]]=np.nan
這有效。
當我ndxs用作 obj_img 的索引時,python 在做什么?為什么obj_img[ndxs]不一樣obj_img[ndxs[:,0],ndxs[:,1]]?
uj5u.com熱心網友回復:
Fancy indexing當等于 0 時,您可以使用 numpy 內置來替換所有值:
obj_img = obj_img.astype(float)
obj_img[obj_img==0] = np.nan
請注意,您首先必須將其轉換為浮點數,因為它NaN是一個特殊的浮點標記值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342683.html
上一篇:在BASH中為一組單詞添加邊框
下一篇:從輸入(C)中找到最短的線
