0
我有一個關於使用布爾掩碼掩蓋/切片2D numpy數組的問題。在這裏,我有一個np二維數組x,它是python二維數組,切片/從布爾掩模刪除元素,並保持結果爲一個二維數組
x=np.tile(np.arange(10).reshape(10,1),(1,10))
[[0 0 0 0 0 0 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1]
[2 2 2 2 2 2 2 2 2 2]
[3 3 3 3 3 3 3 3 3 3]
[4 4 4 4 4 4 4 4 4 4]
[5 5 5 5 5 5 5 5 5 5]
[6 6 6 6 6 6 6 6 6 6]
[7 7 7 7 7 7 7 7 7 7]
[8 8 8 8 8 8 8 8 8 8]
[9 9 9 9 9 9 9 9 9 9]]
x是一個10乘10陣列,其每列都是相同的。如果有更好的方法來產生這個,你能指出一下嗎?謝謝。再有就是一個布爾數組,
y=(x!=np.arange(10))
[[False True True True True True True True True True]
[ True False True True True True True True True True]
[ True True False True True True True True True True]
[ True True True False True True True True True True]
[ True True True True False True True True True True]
[ True True True True True False True True True True]
[ True True True True True True False True True True]
[ True True True True True True True False True True]
[ True True True True True True True True False True]
[ True True True True True True True True True False]]
現在,我想要得到的結果數組一樣,
[[1 0 0 0 0 0 0 0 0 0]
[2 2 1 1 1 1 1 1 1 1]
[3 3 3 2 2 2 2 2 2 2]
[4 4 4 4 3 3 3 3 3 3]
[5 5 5 5 5 4 4 4 4 4]
[6 6 6 6 6 6 5 5 5 5]
[7 7 7 7 7 7 7 6 6 6]
[8 8 8 8 8 8 8 8 7 7]
[9 9 9 9 9 9 9 9 9 8]]
在X,其相應的位置Y中的元素已經False值被刪除,而新的2D數組被返回。那麼我怎麼能得到這種情況呢?
非常感謝您的幫助。
感謝您的回覆。我也用x [y],發現它形成了一維數組。但爲什麼它應該翻轉,以獲得理想的結果?順便說一句,這裏重塑的是-1。我通常使用像重塑(9,10)來重塑。 –
[當使用重塑](https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html)時,一個維度可以是'-1'。它告訴重塑根據數組大小和其他尺寸長度推斷實際尺寸長度。它基本上意味着「做正確的事情」。現在'reshape' [不改變順序](http://stackoverflow.com/a/35226493/190597)的元素。 'x [y]'以'0,0,0,0,0,0,0,0,1'開頭。如果你想要'1,0,0,0,0,0,0,0,0,0',那麼陣列必須被翻轉。 – unutbu
感謝您的回覆。你提供的方法可以在這種情況下工作。我有一個問題,如果數組y(布爾數組)中的每列都有多個False,那麼我發現你的方法不能每次都工作。你對這種情況有什麼建議嗎?謝謝。 –