【发布时间】:2018-01-09 09:48:49
【问题描述】:
我在 Python 中使用了一个函数,它返回矩阵中周围元素的位置,如下所示:
import numpy as np
neighbours(1,0,len(im2),len(im2),size=4)
返回类似这样的内容:
>>> [(0, 0), (2, 0), (1, 1)]
但是当我想从矩阵本身调用实际值时,我得到一个错误。例如:
matrix[neighbours(1,0,len(im2),len(im2),size=4)]
IndexError: too many indices for array
这显然是因为我传递给矩阵的列表,但是如果我将它更改为一个数组,我会得到一个垂直数组:
np.array(neighbours(1,0,len(im2),len(im2),size=4))
array([[0, 0],
[2, 0],
[1, 1]])
传递给矩阵时不会给出 3 个值:
matrix[np.array(neighbours(1,0,len(im2),len(im2),size=4))]
array([[[ 1., 1., 1., ..., 1., 1., -1.],
[ 1., 1., 1., ..., 1., 1., -1.]],
[[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., -1.]],
[[ 1., 1., 1., ..., 1., 1., -1.],
[ 1., 1., 1., ..., 1., 1., -1.]]])
任何解决此问题的帮助都会很棒!我真的试图避免使用循环来顺序调用这些值,因为它会大大降低我的代码速度。
【问题讨论】:
标签: python list matrix 2d elements