Langsam Übergang von Matlab zu Python ...
Ich habe diese Liste des Formulars
%Vor%und eine weitere Liste mit der gleichen Anzahl von Elementen
%Vor%Ich versuche, die Elemente von list1 zu extrahieren, die keine Nan-Werte enthalten, und die entsprechenden Elemente in list2, d. h. das Ergebnis sollte lauten:
%Vor%In Matlab ist dies einfach mit logischer Indizierung möglich.
Hier habe ich das Gefühl, dass das Verständnis der Liste in irgendeiner Form den Trick bringt, aber ich stecke fest:
%Vor%was offensichtlich für list2 keinen Sinn macht.
Alternativ funktioniert der folgende Versuch der logischen Indizierung nicht ("Indizes müssen ganze Zahlen sein, keine Listen")
%Vor%Ich bin mir sicher, dass es schmerzhaft trivial ist, aber ich kann es nicht herausfinden, Hilfe geschätzt!
Sie können zip
verwenden.
zip
gibt die Elemente des gleichen Index aus den übergebenen Iterablen zurück.
Entpacken Sie jetzt out
, um die erforderliche Ausgabe zu erhalten:
Hilfe zu zip
:
Sie können itertools.izip
verwenden, wenn Sie eine speichereffiziente Lösung wünschen, da sie einen Iterator zurückgibt.
Sie können das einfach tun:
%Vor%Von wo Sie jeden Wert extrahieren können:
%Vor% Es wird empfohlen, das Modul izip
from itertools
zu verwenden. Es verwendet Iteratoren, die je nach Problem eine große Menge an Speicher speichern können.
Anstelle von ~
können Sie numpy.logical_not()
verwenden, was besser lesbar ist.
Willkommen bei Python!
Das sollte funktionieren. Wir prüfen, ob eine Zahl NaN ist oder nicht math.isnan
.
Wir fügen ein Element in list1_clean
und list2_clean
ein, wenn keines der Elemente in der ursprünglichen Liste NaN
ist. Um dies zu überprüfen, verwenden wir die Funktion any
, die% co_de zurückgibt %, wenn ein Element des Iterablen True
ist.
Um es kleiner zu machen und die Verwendung von True
zu vermeiden, könnten Sie dies tun,
zip
Funktion - & gt;
any
Funktion - & gt;
Tags und Links python list matrix-indexing