所以我有一个未知维度的numpy.array,我生成一个索引列表,以便访问矩阵中的特定元素。
如果我知道它是3x3矩阵,我只需访问:
A[1,2,3]
或类似的东西。但是,我正在生成[1,2,3]作为列表,然后需要使用该列表访问矩阵元素。如果我做
A[List]
基本上正在做
A[[1,2,3]]
我显然只是从第一维的1,2,3元素中得到切片
有什么想法吗?
答案 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