2010-08-27 31 views
15

Bu gerçekten basit bir soru, ama cevabı bulamadım. Sayısal dizide öğe nasıl aranır?Sayısal dizide öğe nasıl aranır?

import numpy as np 

arr = np.array([[1,2,3,4,5],[6,7,8,9,10]]) 

print arr(0,0) 

Yukarıdaki kod çalışmıyor.

cevap

29

Onun yerine köşeli parantez kullanın:

print arr[1,1] 
+8

+1. Ekstra bilgi: numpy dizileri 0-tabanlı, yani diziden 1'i almak istiyorsanız 'arr [1,1]' yerine 'arr [0,0]' kullanmalısınız. – kennytm

1

TL; DR:

slicing kullanma: Uzun yılında

>>> import numpy as np 
>>> 
>>> arr = np.array([[1,2,3,4,5],[6,7,8,9,10]]) 
>>> 
>>> arr[0,0] 
1 
>>> arr[1,1] 
7 
>>> arr[1,0] 
6 
>>> arr[1,-1] 
10 
>>> arr[1,-2] 
9 

:

Umarım bu anlayış içinde yardımcı olur: slicing yararlıdır neden

>>> import numpy as np 
>>> np.array([ [1,2,3], [4,5,6] ]) 
array([[1, 2, 3], 
     [4, 5, 6]]) 
>>> x = np.array([ [1,2,3], [4,5,6] ]) 
>>> x[1][2] # 2nd row, 3rd column 
6 
>>> x[1,2] # Similarly 
6 

Ama daha boyutlarda, takdir:

>>> np.array([ [[1,2,3], [4,5,6]], [[7,8,9],[10,11,12]] ]) 
array([[[ 1, 2, 3], 
     [ 4, 5, 6]], 

     [[ 7, 8, 9], 
     [10, 11, 12]]]) 
>>> x = np.array([ [[1,2,3], [4,5,6]], [[7,8,9],[10,11,12]] ]) 

>>> x[1][0][2] # 2nd matrix, 1st row, 3rd column 
9 
>>> x[1,0,2] # Similarly 
9 

>>> x[1][0:2][2] # 2nd matrix, 1st row, 3rd column 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: index 2 is out of bounds for axis 0 with size 2 

>>> x[1, 0:2, 2] # 2nd matrix, 1st and 2nd row, 3rd column 
array([ 9, 12]) 

>>> x[1, 0:2, 1:3] # 2nd matrix, 1st and 2nd row, 2nd and 3rd column 
array([[ 8, 9], 
     [11, 12]])