2014-02-07 61 views
0

所以我有一个未知维度的numpy.array,并且我生成一个索引列表以访问矩阵内的特定元素。使用未知长度的列表访问numpy矩阵元素

如果我知道这是一个3x3矩阵我想简单地访问:

A[1,2,3] 

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

A[List] 

这基本上是做

A[[1,2,3]] 

我明明只是得到了1,2,3元素片在第一维

任何想法?

回答

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 
+0

感谢您的快速反应......我以为我试过了,但显然不是! –

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