Spalte in einer Liste ersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
smith0815
User
Beiträge: 99
Registriert: Dienstag 13. April 2010, 11:08

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?
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.
smith0815
User
Beiträge: 99
Registriert: Dienstag 13. April 2010, 11:08

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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
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]])
Antworten