[PYTHON] Wie benutzt man numpy?

Leute, die gehört haben, dass Python gut für numerische Berechnungen und maschinelles Lernen ist, und Python gestartet haben, aber es ist ein wenig schwierig, aber C ++ ist überhaupt schneller. Leute, die den Namen Numpy gehört haben, ihn aber nie benutzt haben. Ich habe versucht, numpy zu verwenden, aber der Punkt ist eine erweiterte Version des Mathe-Pakets? Jemand, der denkt. Für diese Leute werde ich Ihnen beibringen, wie man Numpy richtig benutzt!

Installieren Sie numpy

Wenn Sie Python mit Anaconda installiert haben, haben Sie wahrscheinlich bereits Numpy. Abhängig von der Installationsmethode besteht die Möglichkeit, dass numpy enthalten ist. Lassen Sie uns zunächst prüfen, ob numpy enthalten ist. Geben Sie python in das Terminal ein (Eingabeaufforderung für Windows), um die Python-Konsole zu starten. In der Python-Konsole

> import numpy

Wenn bei der Eingabe kein Fehler auftritt, wird er installiert. Wenn Sie eine Fehlermeldung wie "No Module Named numpy" erhalten, wird diese nicht installiert und Sie müssen sie installieren. Im Terminal (nicht in der Python-Konsole)

$ pip install numpy

Sie können es mit installieren.

Wie erstelle ich ein Array?

Von hier aus werden wir uns speziell mit der Programmierung mit numpy befassen, aber numpy ist

> import numpy as np

Wird importiert. Dies bedeutet, dass das Modul numpy mit dem Namen np importiert wird.

So erstellen Sie ein eindimensionales Array

Die Grundlagen von numpy beginnen mit dem Erstellen eines Arrays. Die Anordnung mit dem Inhalt "1,2,3" ist

> arr = np.asarray([1,2,3])
> arr
array([1, 2, 3])

Du kannst es schaffen. Darüber hinaus können Sie den Typ des Arrays angeben, indem Sie "dtype" angeben. Zu den häufig verwendeten Typen gehören "np.int32", "np.float32" und "np.float64". Damit erstellen Sie ein Array vom Typ "np.int32"

> arr = np.asarray([1,2,3], dtype=np.int32)
> arr
array([1, 2, 3], dtype=int32)

Wird besorgt. So ändern Sie den Typ eines bereits vorhandenen Arrays

> i_arr = np.asarray([1,2,3], dtype=np.int32)
> f_arr = i_arr.astype(np.float32)
> f_arr
array([ 1.,  2.,  3.], dtype=float32)

Wird besorgt. Zu diesem Zeitpunkt ändert sich das ursprüngliche Array "i_arr" nicht.

> i_arr
array([1, 2, 3], dtype=int32)

So erstellen Sie ein mehrdimensionales Array

So erstellen Sie ein mehrdimensionales Array

> arr = np.asarray([[1,2,3], [4,5,6]])
> arr
array([[1, 2, 3],
       [4, 5, 6]])

Wird besorgt. Sie können den Typ wie bei eindimensional angeben und ändern. Das Element shape enthält die Form des Arrays.

> arr.shape
(2, 3)

Dies ist ein Tupeltyp. Die Form des eindimensionalen Arrays ist übrigens

> arr = np.asarray([1,2,3])
> arr.shape
(3,)

Wird sein. Dies ist ein Tupeltyp mit nur einem Element.

Wie erstelle ich ein spezielles Array?

Mit numpy können Sie ganz einfach spezielle Arrays erstellen.

> #Ein Array mit allen 0 Elementen
> np.zeros((2, 3))
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
> #Ein Array mit allen 1 Elementen
> np.ones((2, 3))
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
> #Element[0-1)Nach dem Zufallsprinzip im Bereich von initialisieren
> np.random.rand(2, 3)
array([[ 0.24025569,  0.48947483,  0.61541917],
       [ 0.01197138,  0.6885749 ,  0.48316059]])
> #Generieren Sie Elemente gemäß einer Normalverteilung
> np.random.randn(2, 3)
array([[ 0.23397941, -1.58230063, -0.46831152],
       [ 1.01000451, -0.21079169,  0.80247674]])

Es gibt viele andere Funktionen, die Arrays generieren. Wenn Sie diese Art von Arrangement wünschen, können Sie es über Google finden.

Array-Berechnung

Grundberechnung

Die Stärke von numpy ist, dass es sehr einfach ist, zwischen Arrays zu berechnen.

> a = np.asarray([[1,2,3],[4,5,6]])

Gegen

> 3 * a
array([[ 3,  6,  9],
       [12, 15, 18]])

Es wird sein. Durch skalares Multiplizieren eines Arrays wird jedes Element mit einer Konstanten multipliziert. Wenn Sie einen Skalar hinzufügen

> 3 + a
array([[4, 5, 6],
       [7, 8, 9]])

Und werden zu jedem Element hinzugefügt. Berechnung zwischen Arrays

> b = np.asarray([[2,3,4],[5,6,7]])
> a + b
array([[ 3,  5,  7],
       [ 9, 11, 13]])
> a * b
array([[ 2,  6, 12],
       [20, 30, 42]])

Bei der Berechnung von Arrays derselben Form werden die Elemente an derselben Position berechnet und das Array dieser Form zurückgegeben. Manchmal können Arrays unterschiedlicher Form berechnet werden.

> v = np.asarray([2,1,3])
> a * v
array([[ 2,  2,  9],
       [ 8,  5, 18]])
> a + v
array([[3, 3, 6],
       [6, 6, 9]])

Bei der Berechnung des zweidimensionalen Arrays und des eindimensionalen Arrays ergibt sich das Ergebnis der Berechnung jeder Zeile des zweidimensionalen Arrays als eindimensionales Array, wenn die Anzahl der Spalten des zweidimensionalen Arrays der Länge des eindimensionalen Arrays entspricht Ich komme wieder. Daher hat das Array die gleiche Form wie das zweidimensionale Array.

Es ist auch möglich, Operationen unter Verwendung eines zweidimensionalen Arrays als einzelne Matrix durchzuführen.

> M = np.asarray([[1,2,3], [2,3,4]])
> N = np.asarray([[1,2],[3,4], [5,6]])

Um das Produkt von zwei Arrays von zu finden

> M.dot(N)
array([[22, 28],
       [31, 40]])

Wird besorgt. Hier multiplizieren wir die $ 2 \ times 3 $ -Matrix mit der $ 3 \ times 2 $ -Matrix, sodass die $ 2 \ times 2 $ -Matrix zurückgegeben wird.

Funktionsaufruf

Mit numpy können Sie Arrays in verschiedene Funktionen einfügen. Zu diesem Zeitpunkt wirkt die Funktion auf jedes Element. Zum Beispiel

> a = np.asarray([[1,2], [3,1])
> np.log(a)
array([[ 0.        ,  0.69314718],
       [ 1.09861229,  0.        ]])

Es wird sein. Zu diesem Zeitpunkt ändert sich das ursprüngliche Array nicht. Außerdem gibt es die meisten möglichen Funktionen wie Dreiecksfunktion, "exp", "sqrt" usw.

Nehmen Sie Statistiken

numpy ist auch gut darin, Array-Statistiken zu sammeln. Die ersten 100 erzeugen diese Zufallszahl.

> arr = np.random.rand(100)

Den Durchschnitt der Sequenz nehmen

> np.mean(arr)
0.52133315138159586

Wird besorgt. Die Maximal- und Minimalwerte sind

> np.max(arr)
0.98159897843423383
> np.min(arr)
0.031486992721019846

Du kannst es haben. Die Standardabweichung ist

> np.std(arr)
0.2918171894076691

Um die Summe zu bekommen

> np.sum(arr)
52.133315138159588

Wird besorgt. Sie können auch angeben, in welche Richtung Statistiken für ein zweidimensionales Array erstellt werden sollen. Zum Beispiel

> arr = np.asarray([[1,2,3], [2,3,4]])
> np.sum(arr, axis=0)
array([3, 5, 7])
> np.sum(arr, axis=1)
array([6, 9])

Es wird sein.

Eigentlich verwenden

Einschließlich der obigen Angaben verwenden wir numpy, um den Code für die Mittelung der euklidischen Abstände von den Ursprüngen von 100 Vektoren im dreidimensionalen Raum zu berechnen.

Angenommen, das Array "data" ist ein Array der Form "(100, 3)", die erste Spalte hat $ x $ -Koordinaten, die zweite Spalte hat $ y $ -Koordinaten und die dritte Spalte hat $ z $ -Koordinaten. Hier

> data = np.random.randn(100, 3)

Generiert als. Euklidische Entfernung

d(x,y,z) = \sqrt{x^2+y^2+z^3}

Zuallererst ist also jedes Element selbst montiert.

> squared = data**2

Dann summiere die Zeilen.

> squared_sum = np.sum(squared, axis=1)

Zu diesem Zeitpunkt wird "squared_sum" zu einem eindimensionalen Array. Wenn Sie dagegen die Quadratwurzel ziehen, können Sie den euklidischen Abstand jedes Punktes ermitteln.

> dist = np.sqrt(squared_sum)

Wenn Sie den Durchschnitt dieser Entfernung nehmen

> np.mean(dist)
1.5423905808984208

ist geworden. (Da die Daten zufällig generiert werden, unterscheidet sich das Ergebnis geringfügig.)

Wenn Sie diesen Code ohne Verwendung von numpy ausführen, können Sie die for-Schleife verwenden, um jeden der 100 Punkte zu berechnen, und die for-Schleife für jeden Punkt verwenden, wenn die Dimension zunimmt. Der Code ist nicht nur kompliziert, sondern verlangsamt auch die Ausführung. Auf diese Weise besteht die Grundidee von numpy darin, ein großes Array sofort zu berechnen. Infolgedessen kann numpy komplexe Operationen ausführen, die für Python unglaublich schnell sind.

Übrigens habe ich diesmal eins nach dem anderen zum Üben berechnet, aber numpy hat eine Funktion namens "np.linalg.norm", so dass Sie den euklidischen Abstand leicht berechnen können.

Zusammenfassung

Das ist alles für die grundlegende Verwendung von numpy, aber numpy hat viel mehr Funktionen. Zum Beispiel die Funktion np.where, die den Index eines Elements findet, das die Bedingungen erfüllt.

Ich denke, der schnellste Weg, sich zu verbessern, besteht darin, Python zu schreiben und zu erleben, während man googelt. Geben Sie also bitte Ihr Bestes, auch wenn Sie zuerst verwirrt sind!

Recommended Posts

Wie benutzt man numpy?
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
So bedienen Sie NumPy
Wie man Imutils benutzt
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwendung des Generators
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Wie benutzt man Python Argparse?
Verwendung von IPython Notebook
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Verwendung von Redispy-Wörterbüchern
So installieren Sie mkl numpy
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Go] Verwendung von "... (3 Perioden)"
So bedienen Sie GeoIp2 von Django
Verwenden Sie Numpy
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
[Einführung] Verwendung von open3d
Wie benutzt man Python Lambda?
So verwenden Sie Jupyter Notebook
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
So verwenden Sie Google Colaboratory