我使用numpy是Python。我已預裝成numpy的2維陣列的圖像爲:Numpy - 通過測試相鄰索引獲取索引位置
[
[...], # row0
[...], # row1
[...], # row2
...
]
我需要獲得所有像素的所有索引位置,其中任一北(只有下列之一),南,東或西相鄰像素具有一定的價值。在我的情況下,如果任何4個相鄰像素的0
我使用numpy是Python。我已預裝成numpy的2維陣列的圖像爲:Numpy - 通過測試相鄰索引獲取索引位置
[
[...], # row0
[...], # row1
[...], # row2
...
]
我需要獲得所有像素的所有索引位置,其中任一北(只有下列之一),南,東或西相鄰像素具有一定的價值。在我的情況下,如果任何4個相鄰像素的0
如果是你原來的數組,定義了一堆片:
from scipy import *
a = ones((12,22))
a[5,10] = a[5,12] = 0
a_ = a[1:-1, 1:-1]
aE = a[1:-1, 0:-2]
aW = a[1:-1, 2:]
aN = a[0:-2, 1:-1]
aS = a[ 2:, 1:-1]
a4 = dstack([aE,aW,aN,aS])
num_adjacent_zeros = sum(a4 == 0, axis=2)
print num_adjacent_zeros
ys,xs = where(num_adjacent_zeros == 1)
# account for offset of a_
xs += 1
ys += 1
print '\n hits:'
for col,row in zip(xs,ys):
print (col,row)
的理由採取小a_
的是,我不知道你想與邊緣的情況下,例如在那裏做什麼北方像素可能不存在。
我建立了一個相鄰零的數量的數組,並使用它來獲得剛好相鄰的零的位置。輸出:
[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
hits:
(10, 4)
(12, 4)
(9, 5)
(13, 5)
(10, 6)
(12, 6)
你是什麼意思邏輯操作。抱歉。我是新來的numpy。 – miki725
好吧,我會詳述我的回答 – wim
謝謝你的闡述。試圖弄清楚你在這裏做了什麼。所有這些功能對我來說依然是陌生的。 – miki725