2016-11-28 2 views
0

Wie kann ich die numpy Array nach Zeilen füllen?Fill numpy Array nach Zeilen

Zum Beispiel arr=np.zeros([3,2]). ich ersetzen wollen jede Zeile von list = [1,2].

So Ausgabe lautet:

[1 2 
1 2 
1 2] 

ich es von Hand machen kann

for x in arr[:]: 
    arr[:]=[1,2] 

Aber ich glaube, es ist schneller Wege.

Sorry, schauen Sie bitte edit: Angenommen, wir haben:

arr=array([[[ 0., 0., 0.], 
     [ 0., 0., 0.]], 

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

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

I arr wollen [1] Array von [1,2] wie folgt füllen:

arr=array([[[ 0., 0., 0.], 
     [ 0., 0., 0.]], 

     [[ 1., 1., 1.], 
     [ 2., 2., 2.]], 

     [[ 0., 0., 0.], 
     [ 0., 0., 0.]]]) 
+0

Ist Ihr Original-Array tatsächlich alle Nullen? – wwii

+0

Whst ist Ihr Array Shapw? – wwii

Antwort

1

Ihre Schleife isn nicht notwendig.

Die Nutzung von broadcasting, können Sie dies mit einer einzigen Aufgabe:

arr[:] = [1,2] 

Numpy sendet die rechtsseitige Anordnung in eine Form zuordenbar der linken Handseite.


Was die zweite Frage (in Ihrem Update), können Sie tun:

arr.T[..., 1] = [1,2] 
+0

bitte sehen update – user7198142

+0

@ user7198142 bitte aktualisierte antwort – shx2

0

In diesem Fall einfache Zuordnung auf das gesamte Array funktioniert:

In [952]: arr=np.zeros((3,2),int) 
In [953]: arr[...]=[1,2] 
In [954]: arr 
Out[954]: 
array([[1, 2], 
     [1, 2], 
     [1, 2]]) 

Das liegt daran, Die Liste wird in ein (2,) Array übersetzt, das zu (1, 2) und dann (3,2) übertragen werden kann, um zu arr:

zu passen

Wenn ich durch Spalte, um Werte wollen, habe ich

In [957]: arr[...]=np.array([1,2,3])[:,None] 
In [958]: arr 
Out[958]: 
array([[1, 1], 
     [2, 2], 
     [3, 3]]) 

ich ein bisschen mehr Arbeit zu tun haben, um explizit eine (3,1) Array zu machen, die auf Broadcasts (3,2).

=================

ich bereits beantwortet Ihre geänderte Frage:

In [963]: arr[1,...]=np.array([1,2])[:,None] 
In [964]: arr 
Out[964]: 
array([[[ 0., 0., 0.], 
     [ 0., 0., 0.]], 

     [[ 1., 1., 1.], 
     [ 2., 2., 2.]], 

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

=========== ======

hinzufügen tile zu Ihrem Toolkit:

In [967]: np.tile([1,2],(3,1)) 
Out[967]: 
array([[1, 2], 
     [1, 2], 
     [1, 2]]) 
In [968]: np.tile([[1],[2]],(1,3)) 
Out[968]: 
array([[1, 1, 1], 
     [2, 2, 2]]) 
+0

sehen sie bitte update – user7198142

+0

ich zeige bereits, wie man nach spalte füllt. Siehe meine Bearbeitung – hpaulj