我通過使用生成一組獨特的坐標組合
axis_1 = np.arange(image.shape[0])
axis_1 = np.reshape(axis_1,(axis_1.shape[0],1))
axis_2 = np.arange(image.shape[1])
axis_2 = np.reshape(axis_2,(axis_2.shape[0],1))
coordinates = np.array(np.meshgrid(axis_1, axis_2)).T.reshape(-1,2)
然后我檢查一些條件,如果滿足,我想從陣列中洗掉坐標。就像是
if image[coordinates[i,0], coordinates[i,1]] != 0:
remove coordinates i from coordinates
我嘗試了洗掉和洗掉命令,但一個不適用于陣列,另一個只是洗掉出現坐標 [i,0] 和坐標 [i,1] 的每個實體,而不是兩者的唯一組合。謝謝
uj5u.com熱心網友回復:
“從陣列中洗掉坐標”是什么意思?如果 image 是一個 numpy 陣列,你不能簡單地洗掉一個值。numpy 陣列的每個位置都存在并且有一個值。一種選擇是將相應的坐標設定為 numpy.nan
uj5u.com熱心網友回復:
您可以使用numpy.delete函式,但此函式回傳一個新的修改后的陣列,并且不會就地修改陣列(這會很成問題,特別是在for回圈中)。
所以你的代碼看起來像這樣:
nb_rows_deleted = 0
for i in range(0, coordinates.shape[0]):
corrected_i = i - nb_rows_deleted
if image[coordinates[corrected_i, 0], coordinates[corrected_i, 1]] != 0:
coordinates = np.delete(coordinates, corrected_i, 0)
nb_rows_deleted = 1
corrected_i考慮到在回圈期間已洗掉了一些行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416474.html
標籤:
上一篇:Python-將隨機種子(生成器)傳遞給`randn()`
下一篇:使用numpy創建陣列的子陣列
