2012-03-27 16 views
5

numpy kullanarak yeni bir şey sayıyorum ve gerçekten anlamadığım bir şey dizileri dizine dizinleme kullanmaktır.Boole dizileriyle çokboyutlu dizilerle dizinleme

>>> a = arange(12).reshape(3,4) 
>>> b1 = array([False,True,True])    # first dim selection 
>>> b2 = array([True,False,True,False])  # second dim selection 
>>> 
>>> a[b1,b2]         # a weird thing to do 
array([ 4, 10]) 

Ben bu son şeyi yapar neden hiçbir fikrim yok: tentative tutorial yılında

bu örnek yoktur. Bunu bana açıklayan var mı?

Teşekkürler!

cevap

4

Kişisel dizi oluşur: bu tamsayılar listesini kullanarak olacağını indeksleme

0 1 2 3 
4 5 6 7 
8 9 10 11 

bir şekilde, belirten olan satır/sütun dahil etmek:

>>> i1 = [1,2] 
>>> i2 = [0,2] 
>>> a[i1,i2] 
array([ 4, 10]) 

Anlamı: satır 1 sütun 0 satır 2 sütun 2

Boole indekslerini kullanırken, hangi satırların/sütunların ekleneceğini ve hangilerinin eklenmeyeceğini belirtirsiniz:

>>> b1 = [False,True,True]  # 0:no, 1:yes, 2:yes  ==> [1,2] 
>>> b2 = [True,False,True,False] # 0:yes, 1:no, 2:yes, 3:no ==> [0,2] 

Gördüğünüz gibi bu, yukarıda gösterilen i1 ve i2 ile eşdeğerdir. Bu nedenle, a[b1,b2] aynı sonucu alacak. b1 ve b2 hem True değerleri (tamsayı şeklinde ifade edildiğinde, bu yüzden aynı uzunlukta iki dizi temsil) aynı sayıda için

Not işlemi yukarıda mümkündür Ayrıca.

+0

+1 Daha fazla bilgi için http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html adresini ziyaret edebilirsiniz. –

İlgili konular