Seite 1 von 1

Spalte in einer Liste ersetzen

Verfasst: Freitag 22. Juli 2011, 17:23
von smith0815
Hi

ich sehe mal wieder den Wald vor lauter Bäumen nicht und hänge wieder an einer Grundlagen-Frage.

Bsp.

x = [[1,2,0],[4,5,0],[7,8,0]]
y = [3,6,9]

Ziel = [[1,2,3],[4,5,6],[7,8,9]]

Wie bekomme ich es hin, die 3 Spalte zu entfernen und y als 3. an zu hängen?

Re: Spalte in einer Liste ersetzen

Verfasst: Freitag 22. Juli 2011, 17:27
von BlackJack
@smith0815: Eine Spalte gibt es im Grunde ja nicht. In Listenterminologie willst Du das 3. Element von jeder Liste ersetzen. Das geht mit einer Schleife und `zip()` bzw. `itertools.izip()` eigentlich ganz einfach.

Re: Spalte in einer Liste ersetzen

Verfasst: Freitag 22. Juli 2011, 20:41
von smith0815
Hi

Danke für deine Antwort.
Ich habe es jetzt über Numpy gelöst.
In dem ich es transformiert, hinten dran gehangen und zurück transformiert habe.

Re: Spalte in einer Liste ersetzen

Verfasst: Freitag 22. Juli 2011, 22:25
von mutetella
Hallo,

ich muss gestehen, von numpy habe ich keine große Ahnung...

Mit Boardmitteln, so wie BlackJack bereits vorgeschlagen hat, kannst Du das so

Code: Alles auswählen

In [345]: x = [[1, 2, 0], [4, 5, 0], [7, 8, 0]]

In [346]: y = [3, 6, 9]

In [347]: for xx, yy in zip(x, y):
   .....:     xx[2] = yy
   .....:     
   .....:     

In [348]: x
Out[348]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
lösen.

mutetella

Re: Spalte in einer Liste ersetzen

Verfasst: Freitag 22. Juli 2011, 22:47
von BlackJack
@smith0815: Also transformieren, anhängen, und zurück transformieren klingt irgendwie umständlich!? Und was genau ist „anhängen” hier? In Deinem Beispiel ist ja nur ersetzen gefordert und das ist eine einfache Zuweisung auf das entsprechende Unter-Array:

Code: Alles auswählen

In [62]: x
Out[62]: 
array([[1, 2, 0],
       [4, 5, 0],
       [7, 8, 0]])

In [63]: y
Out[63]: [3, 6, 9]

In [64]: x[...,2] = y

In [65]: x
Out[65]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])