Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用多维数组调用二维数组元素_Python_List_Matrix_2d_Elements - Fatal编程技术网

Python 用多维数组调用二维数组元素

Python 用多维数组调用二维数组元素,python,list,matrix,2d,elements,Python,List,Matrix,2d,Elements,我在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 indi

我在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.]]])

任何关于修复此问题的帮助都将是巨大的!我真的试图避免使用循环按顺序调用值,因为这会大大降低我的代码速度

当然,它会抛出错误。您正试图使用此函数访问矩阵的元素。i、 e.方括号

矩阵[邻域1,0,lenim2,lenim2,大小=4]

使用下面给出的普通括号

import numpy as np
a = [(0, 0), (2, 0), (1, 1)]
m = np.matrix(a)
print(m)
高级索引似乎在单独的元组或数组中使用行、列和索引

ni = [(0, 0), (2, 0), (1, 1)]

ary = np.arange(12).reshape(3,4)

ary

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

rows, cols = zip(*ni)  # list "transpose" with zip, unpacked to rows, cols

ary[rows, cols]

array([0, 8, 5])

当我这样做时,我会得到以下错误:TypeError:'numpy.ndarray'对象是不可调用的