2016-06-10 14 views
0

habe ich eine ndarray A von Form (u, v, w) wie folgt aus:numpy Stapelreihen von ndarray

[[[ 1., 1., 0.], 
    [ 1., 3., 0.]], 

    [[ 0., 0., 0.], 
    [ 0., 0., 0.]]] 

ich brauche die Zeilen Stapel (entlang Dimension 0) zusammen etwa so.

[[1., 1., 0., 0., 0., 0.], 
[1., 3., 0., 0., 0., 0.]] 

Wie mache ich das? Ich weiß, wenn ich nur zwei Zeilen habe, kann ich np.hstack ((a [0], a [1]))) aber gibt es eine Möglichkeit, dies zu tun, ohne die Zeilen in ein Tupel zu konvertieren? Ich möchte diesen Code in Theano verwenden (da numpy und Theano Arbeit ähnlich)

Antwort

4

Diese shoul funktionieren:

np.hstack(a) 

Btw a[0], a[1], ... sind die Zeilen und Spalten nicht von a.

+0

Haben Sie eine Idee, wie ich dies mit einem Tensor3 Variable in theano tun würde? – Aditya369

+0

Schauen Sie in 'T.reshape' und' T.dimshuffle'. Die Kombination von beiden sollte Ihnen erlauben, so ziemlich alles zu tun, was Sie wollen. – Julien

+0

T.stack macht es nicht, wenn Sie einen einzelnen Tensor übergeben. Sie müssen eine Liste von Tensoren übergeben – Aditya369

4

Alle concatenate Familie von Funktionen iterieren das Argument, ob es sich um eine Liste, Tupel oder Array

In [318]: x=np.arange(12).reshape(2,2,3) 

In [319]: x 
Out[319]: 
array([[[ 0, 1, 2], 
     [ 3, 4, 5]], 

     [[ 6, 7, 8], 
     [ 9, 10, 11]]]) 

Diese alle gleichwertig:

In [320]: np.hstack([x[0],x[1]]) 
Out[320]: 
array([[ 0, 1, 2, 6, 7, 8], 
     [ 3, 4, 5, 9, 10, 11]]) 

In [321]: np.hstack(x) 
Out[321]: 
array([[ 0, 1, 2, 6, 7, 8], 
     [ 3, 4, 5, 9, 10, 11]]) 

In [322]: np.concatenate([x1 for x1 in x],axis=1) 
Out[322]: 
array([[ 0, 1, 2, 6, 7, 8], 
     [ 3, 4, 5, 9, 10, 11]]) 

In [323]: np.concatenate(x,axis=1) 
Out[323]: 
array([[ 0, 1, 2, 6, 7, 8], 
     [ 3, 4, 5, 9, 10, 11]]) 

Reshape ein Array von der richtigen Form erzeugen kann, , aber die falsche Reihenfolge:

In [332]: x.reshape(2,6) 
Out[332]: 
array([[ 0, 1, 2, 3, 4, 5], 
     [ 6, 7, 8, 9, 10, 11]]) 

aber wenn wir die 1. 2 tauschen Achsen zuerst, Umformen funktioniert:

In [333]: x.transpose(1,0,2).reshape(2,6) 
Out[333]: 
array([[ 0, 1, 2, 6, 7, 8], 
     [ 3, 4, 5, 9, 10, 11]]) 
+0

Sollte ich die erste Antwort oder die vollständige Antwort akzeptieren? – Aditya369

+0

Hast du eine Idee wie ich das mit einer tensor3 Variable in theano machen würde? – Aditya369

+0

Sorry, ich habe Theano ignoriert. – hpaulj

Verwandte Themen