Numpy gcd-Funktion
Tut numpy
haben eine gcd
Funktion irgendwo in der Struktur der Module?
Ich bin mir dessen bewusst fractions.gcd
dachte aber, ein numpy
entspricht vielleicht potenziell schneller und besser arbeiten mit numpy
Datentypen.
Habe ich nicht in der Lage war zu entdecken, nichts auf google außer diesem link, die scheint veraltet und ich weiß nicht, wie ich den Zugriff auf die _gcd
- Funktion schlägt er existiert.
Naiv versucht:
np.gcd
np.euclid
nicht für mich gearbeitet...
- Ich denke, die
_gcd
Funktion, die Sie sprechen, das ist beinumpy.core._internal._gcd
, aber es ist in reinem Python (und so nicht zu schnelle) und nicht handhaben numpy-arrays in jedem Fall. - ist der de-facto-Ansatz Fraktionen.gcd? Ich gehe davon aus, dass eine schnellere Umsetzung in C
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es selbst schreiben:
Hier ist der code, um das Ergebnis testen und die Geschwindigkeit:
Public service announcement für jemand mit Python 3.5
Und wenn Sie wollen, schreiben Sie es sich in einem one-liner:
Es scheint, gibt es keine
gcd
Funktion noch innumpy
. Es gibt jedoch eine gcd-Funktion in Bruchteilen Modul. Wenn Sie brauchen, umgcd
aufnumpy
arrays, Sie bauen konnteufunc
Verwendung:numpy.ufunc.reduce(gcd, m)
wom
ist die Liste und diegcd
ist, wie in dieser Antwort.Funktionen gcd (Greatest Common Divisor) und lcm (Lowest Common Multiple) wurden Hinzugefügt, um numpy in der version 1.15.
Falls das gewünschte Ergebnis nicht ein element-wise gcd, sondern der ggT aller zahlen im array ist, können Sie folgenden code verwenden.
Je nach Anwendungsfall, kann es schneller sein das weglassen der Sortierung Schritt
a = np.unique(a)
.Alternative (vielleicht eleganter, aber langsamer) Umsetzung mit ufuncs ist