Operation auf 2d Array-Spalten

8

Ich würde gerne wissen, ob es möglich ist, eine Funktion in einer Python-2d-Matrix anzuwenden (oder eine Operation, wie beispielsweise Werte zu ersetzen), ohne for-Schleifen zu verwenden.

Es tut mir leid, wenn die Frage bereits gestellt wurde, aber ich konnte nichts spezifisch über mein Problem finden.

Ich möchte etwas tun wie:

%Vor%

Was bedeuten würde, dass für jeden Wert in der dritten Spalte 1 oder

1 setzen würde %Vor%

Was bedeutet, dass func() auf die dritte Zeile des Arrays anwenden .

Gibt es eine magische Python-Methode?

EDIT: Die Wahrheit wurde gesprochen. Ich habe vergessen zu sagen, dass ich for() Anweisung nicht vermeiden wollte, um die Leistung zu verbessern, aber nur weil ich keine mehrfachen Zeilen für diese genaue Instanz hinzufügen möchte. Wir haben hier zwei Antworten, eine auf native Weise und zwei weitere mit Hilfe von Numpy. Vielen Dank für Ihre Antworten!

    
Coulis 22.09.2015, 14:27
quelle

4 Antworten

7

Ohne Nummer kann es so gemacht werden:

%Vor%     
Eugene Soldatov 22.09.2015, 14:39
quelle
7

Sie können dies einfach mit numpy Arrays tun. Beispiel -

%Vor%

Weitere Details zu diesem finden Sie hier . Bitte seien Sie vorsichtig, für nackte Arrays, wie angegeben in der Dokumentation -

  

Alle Arrays, die durch einfaches Slicing erzeugt werden, sind immer Ansichten des ursprünglichen Arrays.

Dies ist der Grund, warum beim Ändern des in Scheiben geschnittenen Arrays innerhalb der Funktion das tatsächliche Array geändert wurde.

    
Anand S Kumar 22.09.2015 14:29
quelle
2

Es wäre sehr einfach in numpy und Sie können es mit einer einfachen Zuweisung tun:

%Vor%

Aber wenn Sie nach einem Python-Ansatz suchen, können Sie zip function und itertools.repeat() :

verwenden %Vor%

Demo:

%Vor%

Beachten Sie, dass in Python 3.X zip einen Iterator zurückgibt, können Sie auch list function verwenden, um eine Liste zurückzugeben, da Iteratoren die Indexierung innerhalb der Funktion nicht unterstützen, die Sie ebenfalls aufrufen müssen.

%Vor%     
Kasramvd 22.09.2015 14:47
quelle
2

Sie können jeder Spalte eine Funktion zuordnen ....

%Vor%     
LetzerWille 22.09.2015 15:04
quelle

Tags und Links