可能重复:
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