[Python] Come "accatastare" array numpy bidimensionali (x, y) con y variabile per formare un array numpy tri-dimensionale(z, x, y) con lo stesso dtype?

Pietro peter.zamb a gmail.com
Gio 5 Feb 2015 14:43:04 CET


2015-02-05 13:16 GMT+01:00 Marco Ippolito <ippolito.marco a gmail.com>:
> il mio obiettivo è avere un numpy array tri-dimensionale del tipo:
>>>> obiettivo = np.array([[[1,2],[3,4]], [[5,6],[7,8],[9,10]]])
>>>> np.shape(obiettivo)
> (2,)
>>>> obiettivo[0]
> [[1, 2], [3, 4]]
>>>> obiettivo[1]
> [[5, 6], [7, 8], [9, 10]]
>>>> np.shape(obiettivo[1])
> (3, 2)
>>>> np.shape(obiettivo[0])
> (2, 2)
> Il problema è che, non so per quale motivo, il dtype diventa 'object':

Gli array devono avere delle dimensioni (shape) ben definite e non
variabili c e d hanno shape diverse...

Il tuo obbiettivo non é altro che un array di liste, le liste sono
object, e quindi il tuo dtype diventa object.

> C'è un modo per ottenere un array numpy tri-dimensionale(z,x,y) a
> partire da numpy array bidimensionali(x,y) con y variabile, mantenendo
> lo stesso dtype dei numpy array bidimensionali iniziali?

si, purchè lo shape degli array che vuoi unire siano consistenti.


Maggiori informazioni sulla lista Python