可能重複:
Numpy/Python: Array iteration without for-loop最好在相鄰細胞基質比較方式
假設我有大小100×100的矩陣,我想每個像素比較其直接鄰居(左,上,右,下),然後對當前矩陣或相同大小的新矩陣進行一些操作。 在Python/numpy的一個示例代碼可能看起來像以下: (比較> 0.5是沒有意義的,我只是想給一個工作例如對於一些操作,同時比較鄰居)
import numpy as np
my_matrix = np.random.rand(100,100)
new_matrix = np.array((100,100))
my_range = np.arange(1,99)
for i in my_range:
for j in my_range:
if my_matrix[i,j+1] > 0.5:
new_matrix[i,j+1] = 1
if my_matrix[i,j-1] > 0.5:
new_matrix[i,j-1] = 1
if my_matrix[i+1,j] > 0.5:
new_matrix[i+1,j] = 1
if my_matrix[i-1,j] > 0.5:
new_matrix[i-1,j] = 1
if my_matrix[i+1,j+1] > 0.5:
new_matrix[i+1,j+1] = 1
if my_matrix[i+1,j-1] > 0.5:
new_matrix[i+1,j-1] = 1
if my_matrix[i-1,j+1] > 0.5:
new_matrix[i-1,j+1] = 1
這可以得到真的很討厭,如果我想步入一個鄰近的小區,並從它開始比較它的鄰居......你有什麼建議如何以更有效的方式做到這一點?這甚至有可能嗎?
http://stackoverflow.com/questions/13805286/numpy-python-array-iteration-without-for-loop/13805310 – YXD
也許你應該澄清你想要的東西......只是想着,它看起來像你想要知道具有值1的哪個像素被8個像素包圍,全部具有1。是這樣嗎? – deinonychusaur