ich eine Matrix aus folgendem Format haben:Multiplying durch Musterabgleich
matrix = np.array([1, 2, 3, np.nan],
[1, np.nan, 3, 4],
[np.nan, 2, 3, np.nan])
und Koeffizienten Ich möchte selektiv elementweise mit meiner Matrix multiplizieren:
coefficients = np.array([0.5, np.nan, 0.2, 0.3],
[0.3, 0.3, 0.2, np.nan],
[np.nan, 0.2, 0.1, np.nan])
In diesem Fall würde ich möchte, dass die erste Zeile in matrix
mit der zweiten Zeile in coefficients
multipliziert wird, während die zweite Zeile in matrix
mit der ersten Zeile in coefficients
multipliziert werden würde. Kurz gesagt, ich möchte die Zeile in coefficients
auswählen, die Zeile in matrix
in Bezug auf wo np.nan
Werte befinden übereinstimmt. Die Positionen np.nan
werden für jede Zeile in coefficients
unterschiedlich sein, da sie die Koeffizienten für verschiedene Fälle von Datenverfügbarkeit beschreiben
Gibt es einen schnellen Weg, dies zu tun, erfordert das Schreiben if-Anweisungen für alle möglichen Fälle nicht?
Können Sie erklären, was 'mask1 [:, None] == mask2' macht? – galliwuzz
@galliwuzz Hinzugefügt Kommentare dazu. – Divakar