2015-09-18 8 views
5

Ho difficoltà a capire come viene determinata la forma dell'array risultante dopo l'affettamento in numpy. Per esempio io sto usando il seguente codice semplice:Determinazione della forma della matrice di risultati dopo l'affettatura in Numpy

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 

uscita di questo è:

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,) 

In entrambi i casi, il contenuto è lo stesso (come dovrebbe essere). Ma differiscono nelle forme. Quindi, in che modo la forma risultante è determinata da Numpy?

+1

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

+2

In sostanza: affettare non riduce il numero di dimensioni, ma con un'indicizzazione intero riduce il numero di dimensioni di 1 ogni volta. –

+0

C'è un attributo 'shape'. Guarda 'x .__ array_interface__' per vederlo e altri attributi. – hpaulj

risposta

5

Si riduce in sostanza riduce a questo -

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 

Quando si esegue a[1:2], si sta chiedendo un array con 1 elemento.

Quando si esegue a[1], si richiede l'elemento in quell'indice.


Simile cosa succede nel tuo caso.

Quando si esegue - array[:,1:2,1] - significa tutti gli indici possibili dalla prima dimensione, un sottoelenco di indici dalla seconda dimensione (sebbene la sotto-lista contenga solo un elemento) e il primo indice da una terza dimensione. Così si ottiene indietro un array di array -

[[ 4] 
    [13] 
    [22]] 

Quando si esegue - array[:,1,1] - vuol dire tutti i possibili indici di prima dimensione, primo indice dalla seconda dimensione, e il 1 ° indice da terza dimensione. Così si ottiene di nuovo una matrice -

[4 13 22] 
Problemi correlati