Ist es möglich, eine numpy
Matrix aus einer Funktion zu konstruieren? In diesem Fall ist die Funktion speziell die absolute Differenz zweier Vektoren: S[i,j] = abs(A[i] - B[j])
. Ein minimales Arbeitsbeispiel, das reguläres Python verwendet:
Geben:
%Vor%Es wäre schön, eine Konstruktion zu haben, die ungefähr so aussieht:
%Vor%wo ich eine Eingabefunktion mit seinen Argumenten übergeben kann und den Geschwindigkeitsvorteil von numpy beibehalten kann.
Zusätzlich zu dem, was @JoshAdel vorgeschlagen hat, können Sie auch die Methode outer
ufunc
, um das Rundschreiben im Fall von zwei Feldern zu tun.
In diesem Fall wollen Sie nur np.subtract.outer(A, B)
(oder vielmehr den absoluten Wert davon).
Obwohl für dieses Beispiel eine der beiden Versionen gut lesbar ist, ist die Übertragung in einigen Fällen nützlicher, während die Verwendung von ufunc-Methoden in anderen Fällen sauberer ist.
Wie auch immer, es ist nützlich, beide Tricks zu kennen.
z.
%Vor% Grundsätzlich können Sie outer
, accumulate
, reduce
und reduceat
mit einer beliebigen Anzahl von ufunc
wie subtract
, multiply
, divide
oder sogar Dinge wie% co_de verwenden %, usw.
Beispiel: logical_and
entspricht np.cumsum
. Das bedeutet, dass Sie so etwas wie np.add.accumulate
by cumdiv
implementieren könnten, wenn Sie es sogar müssten.