2014-02-07 135 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