Python - der beste Weg, um eine Spalte in einem 2D-Array auf einen bestimmten Wert zu setzen

8

Ich habe ein 2D-Array, ich möchte eine Spalte auf einen bestimmten Wert setzen, mein Code ist darunter. Ist das der beste Weg in Python?

%Vor%

Wenn ich eine Anzahl von Spalten auf einen bestimmten Wert setzen möchte, wie könnte ich das erweitern

Ich möchte nur die Python-Standardbibliothek verwenden

Danke

    
mikip 05.02.2010, 12:56
quelle

5 Antworten

11

Eine bessere Lösung wäre:

%Vor%

Für die Werte von cols = 2 , rows = 3 würden wir erhalten:

%Vor%

Dann können Sie wie folgt darauf zugreifen:

%Vor%

Was zu:

führt %Vor%

Oder je mehr Pythonic (Danke J.F. Sebastian):

%Vor%     
Max Shawabkeh 05.02.2010, 13:02
quelle
26

Paket NumPy bietet ein leistungsstarkes N-dimensionales Array-Objekt. Wenn data ein numpy -Array ist, dann setze set_col -Spalte auf val value:

%Vor%

Vollständiges Beispiel:

%Vor%     
jfs 05.02.2010 13:24
quelle
0

Mit der Art, wie Sie es verwenden, ist nichts falsch, außer dass es einfacher wäre, die Variable set_col als set_row zu benennen, da Sie eine Spalte setzen.

Legen Sie also eine Anzahl von Spalten fest, umschließen Sie sie einfach mit einer anderen Schleife:

%Vor%

Aber ein Problem: Ihr 2D-Array ist insofern ungewöhnlich, als es in einem 1D-Array gepackt ist (Python kann 2D-Arrays auch über Listen von Listen unterstützen), also würde ich alles mit Methoden oder Funktionen umhüllen.

    
Eli Bendersky 05.02.2010 12:59
quelle
0

In Ihrem Fall sind Zeilen und Spalten wahrscheinlich austauschbar, d. h. es ist eine Frage der Semantik, welche welche ist. Wenn dies der Fall ist, können Sie Spalten erstellen, um die Reihenfolge der Zellen in data list zu belegen und sie dann mit nur:

auf Null setzen %Vor%     
Tomasz Zielinski 05.02.2010 13:16
quelle
0

Eine frühere Antwort hat eine range weggelassen, so dass Sie Folgendes versuchen könnten:

%Vor%

Um dies auf eine Anzahl von Spalten zu erweitern, könnten Sie die Spaltennummer und ihren Wert in dict speichern. Um also die Spalten 5 bis 10 und 2 bis 7 zu setzen:

%Vor%

Durch den Austausch der Zeilen und Spalten, wie in einer anderen Antwort vorgeschlagen, wird dies etwas einfacher:

%Vor%     
pwdyson 05.02.2010 13:17
quelle