【发布时间】:2013-11-14 18:19:23
【问题描述】:
我正在编写一段代码来打印矩阵元素的最近邻居。我得到一个
"invalid index" error
当我尝试打印邻居列表时(最后一行)。你能找出原因吗?
代码如下:
neighbours = ndarray((ran_x-2, ran_y-2,8),int)
for i in range(0, ran_x):
for j in range(0, ran_y):
if 1 < i < ran_x-1:
if 1 < j < ran_y-1:
neighbours = ([matrix[i-1,j-1],matrix[i-1,j],matrix[i-1,j+1],matrix[i,j-1],matrix[i,j+1],matrix[i+1,j-1],matrix[i+1,j],matrix[i+1,j+1]])
neighbours = np.array(neighbours)
for l in range(1, ran_x-1):
for m in range(1, ran_y-1):
print neighbours[l,m]
【问题讨论】:
-
if i in range(1, ran_x-1)之类的语句令人困惑且效率极低。写if 0 < i < ran_x - 1会更快(更清晰)。 -
实际上,如果你做了
for i in range(1, ran_x-1),对j做同样的事情,并去掉if语句,会更清楚。更好的是,使用xrange(range的惰性版本)来提高效率。
标签: python numpy nearest-neighbor