Numpy

2015-09-18 26 views
5

'da dilimleme işleminden sonra sonuç dizisinin şeklinin belirlenmesi Sonuçta meydana gelen dizinin şeklinin numpy'de dilimleme işleminden sonra nasıl belirleneceğini anlamakta zorlanıyorum. Örneğin aşağıdaki basit kod kullanıyorum: BununNumpy

import numpy as np 


array=np.arange(27).reshape(3,3,3) 

slice1 = array[:,1:2,1] 
slice2= array[:,1,1] 

print "Content in slice1 is ", slice1 
print "Shape of slice1 is ", slice1.shape 
print "Content in slice2 is ",slice2 
print "Shape of Slice2 is", slice2.shape 

Çıktı bağlıdır: (olması gerektiği gibi), bu durumların her ikisinde

Content in slice1 is 
[[ 4] 
    [13] 
    [22]] 
Shape of slice1 is (3, 1) 
Content in slice2 is [ 4 13 22] 
Shape of Slice2 is (3,) 

, içerik aynıdır. Ama şekillerde farklıdırlar. Peki, sonuçta şekil numpy tarafından nasıl belirlenir?

+1

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html – Kasramvd

+2

- Yani bir dizi geri almak Tam sayı, boyutların sayısını her seferinde 1 azaltır. –

+0

Bir 'shape' özniteliği var. Onu ve diğer özellikleri görmek için 'x .__ array_interface__'. – hpaulj

cevap

5

Temelde bu kadar aşağı kaynar - Eğer a[1:2] yaptığınızda, 1 elemanı ile bir dizi için soruyorsunuz

In [118]: a = np.array([1,2,3,4,5]) 

In [119]: a[1:2] 
Out[119]: array([2]) 

In [120]: a[1] 
Out[120]: 2 

.

a[1]'u yaptığınızda, öğeyi bu dizinde soruyorsunuz.


Sizin durumunuzda da benzer bir şey olur.

Yaptığınız zaman - array[:,1:2,1] - ilk boyuttaki olası tüm indeksler, ikinci boyuttan (alt liste sadece bir öğe içeriyor olsa da) bir alt liste listesi ve üçüncü boyuttan 1. dizin anlamına gelir. Yani dizilerden oluşan bir diziyi geri almak -

[[ 4] 
    [13] 
    [22]] 

Bunu yaptığınızda - array[:,1,1] - bu ilk boyuta, ikinci boyuttan 1 indeksi ve üçüncü boyuttan 1 dizinden tüm olası endeksleri anlamına gelir. Bir ile dilimleme boyutların sayısını azaltmaz, ancak dizine: Temelde

[4 13 22]