使用未知长度列表访问numpy矩阵元素

时间:2014-02-07 15:36:56

标签: python numpy matrix

所以我有一个未知维度的numpy.array,我生成一个索引列表,以便访问矩阵中的特定元素。

如果我知道它是3x3矩阵,我只需访问:

A[1,2,3]

或类似的东西。但是,我正在生成[1,2,3]作为列表,然后需要使用该列表访问矩阵元素。如果我做

A[List]

基本上正在做

A[[1,2,3]]

我显然只是从第一维的1,2,3元素中得到切片

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

将您的列表设为元组:

>>> A = np.arange(2*3*4).reshape(2,3,4)
>>> A
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> A[1,2,3]
23
>>> A[(1,2,3)]
23
>>> b = [1,2,3]
>>> A[tuple(b)]
23

答案 1 :(得分:1)

将列表转换为元组。然后它工作正常。

>>> A = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> A
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> A[1, 2]
6
>>> indices = [1,2]
>>> A[indices]
array([[4, 5, 6],
       [7, 8, 9]])
>>> A[tuple(indices)]
6