Erstellen Sie eine Indikatormatrix aus zwei Arrays in Python Numpy

8

Bei zwei gegebenen Vektoren möchte ich eine Indikatormatrix erstellen. Wenn Sie beispielsweise a=np.array([5,5,3,4,4,4]) und b=np.array([5,4,3]) angeben, sollte das Ergebnis

lauten %Vor%

Was ist der einfachste Weg, dies zu erreichen?

    
David 12.07.2017, 17:09
quelle

1 Antwort

11

NumPy broadcasting -

%Vor%

Beispiellauf -

%Vor%

Wenn Sie im einfachsten Fall kompakt meinen wollten, hier ist eine modifizierte Version für die Typenkonvertierung -

%Vor%

Erklärung: None ist ein Alias ​​für numpy.newaxis , mit dem eine neue Achse hinzugefügt wird (Achse mit length=1 ). In diesem Fall erhalten wir mit a[:,None] eine 2D Version von a . Es gibt verschiedene andere Möglichkeiten, diese 2D version zu haben, wobei a.reshape(-1,1) eine davon ist. Dies ermöglicht broadcasting im Vergleich zu 1D b , was zu einem 2D-Array von Übereinstimmungen führt, einem booleschen Array. Der letzte Schritt ist die Konvertierung in ein int -Array.

Schritt-für-Schritt-Lauf -

%Vor%     
Divakar 12.07.2017, 17:12
quelle

Tags und Links