[PYTHON] Verwenden Sie Numpy

Einführung

Beschreibt die Verwendung von Numpy.

Grunddaten (ndarray)

Die grundlegende Datenstruktur in Numpy ist ndarray. Repräsentiert ein N-dimensionales Array.

Beschreibt, wie ein ndarray erstellt wird.

Methode mit Arange

>>> from numpy  import *

# range()Erstellen Sie ein eindimensionales Array mit dem gleichen Gefühl wie.
>>> a = arange(10);a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

#Zweidimensionales Array mit Umformung(2 Zeilen 5 Spalten)Zu
>>> a = arange(10).reshape(2,5);a
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

#3D-Array(Zwei 3-mal-4-Matrizen)
>>> a = arange(24).reshape(2,3,4);a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

Methode mit Array

#Erstellen Sie ein eindimensionales Array. Geben Sie bestimmte Daten an.
>>> a = array([1,2,3]);a
array([1, 2, 3])

#Erstellen Sie ein zweidimensionales Array.
>>> a = array([(1,2,3), (4,5,6)]);a
array([[1, 2, 3],
       [4, 5, 6]])

Methode mit Nullen, Einsen, Auge, leer

Nullen erstellt ein Array mit allen Nullelementen. one erstellt ein Array mit allen 1 Elementen. Auge erstellt ein Array mit 1 diagonalen Element. leer erstellt ein nicht initialisiertes Array.

>>> a = zeros((2,3));a
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

>>> a = ones((2,3));a
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

>>> a = eye(3,3);a
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])

#Der Wert des Elements ist undefiniert, da es nicht initialisiert ist.
>>> a = empty((2,3));a
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

Methode mit Linspace

Erstellen Sie ein eindimensionales Array, indem Sie den Startwert, den Endwert und die Anzahl der Daten angeben. Nützlich beim Erstellen von Funktionsgraphen.

>>> x = linspace(0, 2*pi, 10);x
array([ 0.        ,  0.6981317 ,  1.3962634 ,  2.0943951 ,  2.7925268 ,
        3.4906585 ,  4.1887902 ,  4.88692191,  5.58505361,  6.28318531])

>>> sin(x)
array([  0.00000000e+00,   6.42787610e-01,   9.84807753e-01,
         8.66025404e-01,   3.42020143e-01,  -3.42020143e-01,
        -8.66025404e-01,  -9.84807753e-01,  -6.42787610e-01,
        -2.44929360e-16])

Methode mit Zufall

Erstellen Sie ein Array mit einheitlichen Zufallszahlen und normalen Zufallszahlen als Elemente.

# [0,1)Erstellen Sie eine einheitliche Zufallszahl für.
>>> a = random.random(10);a
array([ 0.55089503,  0.45425945,  0.57639104,  0.65731385,  0.06515141,
        0.75809653,  0.98538432,  0.14194245,  0.81874444,  0.77024755])

#Durchschnittswert mu,Erstellen Sie eine normale Zufallszahl mit einer Standardabweichung von Sigma.
>>> mu = 100; sigma=10
>>> a = random.normal(mu, sigma, 10).reshape(2,5);a
array([[  83.5821915 ,   82.34512541,  102.4633897 ,   72.53721859,
          96.21639407],
       [  91.54337302,   96.03740307,   82.04488924,  109.00803432,
         101.72208762]])

Berechnung

Vier Regeln

>>> a = random.random(6).reshape(2,3);a
array([[ 0.52638479,  0.39144147,  0.75575996],
       [ 0.1557081 ,  0.11812827,  0.84377568]])
>>> b = random.random(6).reshape(2,3);b
array([[ 0.28797541,  0.60331924,  0.81078013],
       [ 0.83825199,  0.41031302,  0.64098045]])
>>> a + b
array([[ 0.8143602 ,  0.9947607 ,  1.56654009],
       [ 0.9939601 ,  0.52844128,  1.48475613]])
>>> a - b
array([[ 0.23840938, -0.21187777, -0.05502018],
       [-0.68254389, -0.29218475,  0.20279523]])
>>> a * b
array([[ 0.15158588,  0.23616417,  0.61275516],
       [ 0.13052263,  0.04846957,  0.54084371]])
>>> a / b
array([[ 1.82788103,  0.64881317,  0.93213921],
       [ 0.18575334,  0.28789793,  1.31638287]])

Warteschlange

>>> a = random.random(6).reshape(2,3);a
array([[ 0.26511097,  0.7092039 ,  0.78596957],
       [ 0.52916934,  0.00993958,  0.30160079]])
>>> b = random.random(6).reshape(3,2);b
array([[ 0.68708518,  0.77809895],
       [ 0.32463964,  0.35987488],
       [ 0.13998871,  0.65494372]])

#Matrix Produkt(dot)
>>> dot(a,b)
array([[ 0.52241638,  0.97627307],
       [ 0.4090319 ,  0.61285465]])

#Translokationsmatrix(T)
>>> a.T
array([[ 0.26511097,  0.52916934],
       [ 0.7092039 ,  0.00993958],
       [ 0.78596957,  0.30160079]])

#Inverse Matrix(linalg.inv)
>>> linalg.inv(dot(a,b))
array([[ -7.74182569,  12.33267281],
       [  5.16705495,  -6.59937322]])

#Matrixformel(linalg.det)
>>> linalg.det(dot(a,b))
-0.079161515267537994

#Eigenwert(w), Einzigartiger Vektor(v) linalg.eig
>>> w, v = linalg.eig(dot(a,b))
>>> w
array([-0.06590343,  1.20117446])
>>> v
array([[-0.85650205, -0.8210583 ],
       [ 0.51614363, -0.57084434]])

Vektor

>>> a = random.random(3);a
array([ 0.52541688,  0.12396039,  0.31534285])
>>> b = random.random(3);b
array([ 0.62372191,  0.00251833,  0.41029588])

#Innenprodukt
>>> inner(a,b)
0.45741006789576372

#Äußeres Produkt(Kreuzprodukt)
>>> cross(a,b)
array([ 0.0500663 , -0.01889014, -0.07599364])

#Direktes Produkt
>>> outer(a,b)
array([[  3.27714024e-01,   1.32317300e-03,   2.15576381e-01],
       [  7.73168097e-02,   3.12173138e-04,   5.08604357e-02],
       [  1.96686245e-01,   7.94137296e-04,   1.29383871e-01]])

Logische Operation

Legt fest, ob die Elemente des Arrays die Kriterien erfüllen.

>>> a = random.random(9).reshape(3,3);a
array([[ 0.07562832,  0.37995414,  0.80141031],
       [ 0.31946711,  0.54688344,  0.27916878],
       [ 0.64425661,  0.50601982,  0.55279281]])

#Für jedes Element a< 0.Machen Sie ein Urteil von 5.
>>> a < 0.5
array([[ True,  True, False],
       [ True, False,  True],
       [False, False, False]], dtype=bool)

#Element für Element(0.2 < a) & (a < 0.4)Wird beurteilt.
>>> (0.2 < a) & (a < 0.4)
array([[False,  True, False],
       [ True, False,  True],
       [False, False, False]], dtype=bool)

# any():Ist mindestens eine wahr?
>>> a = [True,False]
>>> any(a)
True
>>> a = [False,False]
>>> any(a)
False

# all():Sind alle wahr?
>>> a = [True,False]
>>> all(a)
False
>>> a = [True,True]
>>> all(a)
True

Statistische Berechnung

>>> a = random.random(5);a
array([ 0.81006955,  0.54988884,  0.3000227 ,  0.68326733,  0.01710223])

#gesamt
>>> a.sum()
2.3603506492918598
#durchschnittlich
>>> a.mean()
0.47207012985837193
#maximal
>>> a.max()
0.81006955003900494
#Minimum
>>> a.min()
0.017102231221299058
#maximal-Minimum
>>> a.ptp()
0.79296731881770588
#Der Standardabweichungsteiler ist N.
>>> a.std()
0.28337244927937266
#Der Standardabweichungsteiler ist N.-1
>>> a.std(ddof=1)
0.31682002976226714
#Der verteilte Teiler ist N.
>>> a.var()
0.080299945006851087
#Maximalwert-Array-Index
>>> a.argmax()
0
#Minimalwert-Array-Index
>>> a.argmin()
4
#Kumulativer Wert
>>> a.cumsum()
array([ 0.81006955,  1.35995839,  1.65998109,  2.34324842,  2.36035065])

Führt statistische Berechnungen entlang einer Achse für ein N-dimensionales Array durch. Es ist ein Bild, das berechnet wird, indem nur in der angegebenen Achsenrichtung bewegt wird. Die Achse wird durch die Argumentachse angegeben.

#3 Zeilen 4 Spalten*Erstellen Sie ein Array von 2.
>>> a = random.random(24).reshape(2,3,4);a
array([[[ 0.70106649,  0.84600927,  0.96988224,  0.06242455],
        [ 0.90827331,  0.65320237,  0.41143149,  0.73883318],
        [ 0.03434408,  0.40834032,  0.16037719,  0.66273333]],

       [[ 0.33596355,  0.77672752,  0.26468854,  0.83723116],
        [ 0.9966073 ,  0.29452339,  0.26186954,  0.33732824],
        [ 0.76577634,  0.20663298,  0.33442575,  0.3477926 ]]])

#Ich werde dies anhand der Summe als Beispiel erläutern, aber andere Statistiken können auf die gleiche Weise berechnet werden.
# axis=Summe entlang 0.
>>> a.sum(axis=0)
array([[ 1.03703004,  1.62273679,  1.23457077,  0.89965571],
       [ 1.90488061,  0.94772576,  0.67330104,  1.07616143],
       [ 0.80012042,  0.6149733 ,  0.49480294,  1.01052593]])

# axis=Summe entlang 1.
>>> a.sum(axis=1)
array([[ 1.64368387,  1.90755197,  1.54169092,  1.46399106],
       [ 2.09834719,  1.27788389,  0.86098384,  1.52235201]])

# axis=Summe entlang 2.
>>> a.sum(axis=2)
array([[ 2.57938255,  2.71174035,  1.26579492],
       [ 2.21461077,  1.89032848,  1.65462767]])

Datei

>>> a
array([[[ 0.69633633,  0.60467738,  0.46174455,  0.24528887],
        [ 0.03127559,  0.66646753,  0.93620592,  0.39435246],
        [ 0.59428005,  0.05191262,  0.94079899,  0.1217417 ]],

       [[ 0.6436789 ,  0.41509296,  0.38650686,  0.41877047],
        [ 0.87710361,  0.34266031,  0.58358085,  0.72265266],
        [ 0.57560748,  0.2277301 ,  0.12321634,  0.49292207]]])

#Als Binärdatei speichern.
>>> a.tofile("test.dat")

#Aus einer Binärdatei lesen. Achseninformationen wie Zeilen und Spalten sind nicht mehr vorhanden.
>>> fromfile("test.dat")
array([ 0.69633633,  0.60467738,  0.46174455,  0.24528887,  0.03127559,
        0.66646753,  0.93620592,  0.39435246,  0.59428005,  0.05191262,
        0.94079899,  0.1217417 ,  0.6436789 ,  0.41509296,  0.38650686,
        0.41877047,  0.87710361,  0.34266031,  0.58358085,  0.72265266,
        0.57560748,  0.2277301 ,  0.12321634,  0.49292207])

#Speichern Sie im npy-Format.
>>> save("test", a)

#Achseninformationen bleiben ebenfalls erhalten.
>>> load("test.npy")
array([[[ 0.69633633,  0.60467738,  0.46174455,  0.24528887],
        [ 0.03127559,  0.66646753,  0.93620592,  0.39435246],
        [ 0.59428005,  0.05191262,  0.94079899,  0.1217417 ]],

       [[ 0.6436789 ,  0.41509296,  0.38650686,  0.41877047],
        [ 0.87710361,  0.34266031,  0.58358085,  0.72265266],
        [ 0.57560748,  0.2277301 ,  0.12321634,  0.49292207]]])

#Speichern Sie im npz-Format.
>>> savez("test", a=a)

#Durchsuchen Sie das Array mit Schlüsselwörtern.
>>> npz = load("test.npz")
>>> npz["a"]
array([[[ 0.69633633,  0.60467738,  0.46174455,  0.24528887],
        [ 0.03127559,  0.66646753,  0.93620592,  0.39435246],
        [ 0.59428005,  0.05191262,  0.94079899,  0.1217417 ]],

       [[ 0.6436789 ,  0.41509296,  0.38650686,  0.41877047],
        [ 0.87710361,  0.34266031,  0.58358085,  0.72265266],
        [ 0.57560748,  0.2277301 ,  0.12321634,  0.49292207]]])

#Komprimierte Version von savez_Es wird auch komprimiert. Gleiche Verwendung wie savez.

#Wenn Sie es nicht schließen, bleibt die Datei geöffnet.
>>> npz.close()

>>> x = random.random(6).reshape(2,3);x
array([[ 0.56246598,  0.19331716,  0.2826291 ],
       [ 0.81149981,  0.32680372,  0.90326888]])

#Savetxt ist nützlich für zweidimensionale Arrays. Es ist Text, so dass es leicht zu lesen ist.
>>> savetxt("x.txt", x, delimiter="\t")
>>> loadtxt("x.txt")
array([[ 0.56246598,  0.19331716,  0.2826291 ],
       [ 0.81149981,  0.32680372,  0.90326888]])

#Ein Fehler tritt auf, wenn es sich um 3D handelt.
>>> savetxt("a.txt", a) #Ein Fehler wird auftreten.

Recommended Posts

Verwenden Sie Numpy
Verwenden Sie OpenBLAS mit numpy, scipy
Numpy-Übung 1
Verwenden Sie Numpy, Scipy, Scikit-Learn mit Heroku
numpy Teil 1
NumPy-Grundlagen
Numpy Memorandum _ Matrix
Verwenden Sie DeepLabCut
Verwenden Sie pycscope
Verwenden Sie Sammlungen
Verwenden Sie: Django-MySQL
Verwenden Sie Pylements.rb
NumPy-Achse
Verwenden Sie Pandas-Ply
numpy Teil 2
Verwenden Sie GitPython
Verwenden Sie Miniconda
Verwenden Sie Numpy, Scipy, Scikit-Learn unter Amazon Linux
Verwenden Sie BLAS / LAPACK mit mehreren Threads mit numpy / scipy
Mein Numpy (Python)
Verwenden Sie Invariant TSC
wo von numpy
[C] Verwenden Sie qsort ()
Numpy Unit Test
NumPy-Array-Operation (3)
Liste und Numpy
NumPy Universalfunktion
numpy memorandum 1 / np.pad
# Python-Grundlagen (#Numpy 1/2)
Verwenden Sie die JIRA-API
Verwenden Sie schwache Referenzen
Verwenden Sie die django-debug-Symbolleiste nicht lokal
Numpy-Index-Suche
[Numpy] Shuffle ndarray
Verwenden Sie die Kombinationsoptimierung
Python #Numpy Basics
Numpys nicht-grundlegende Technik
Über Numpy Broadcast
[PyTorch] Beispiel ① ~ NUMPY ~
Python: Verwenden Sie Ihre eigene Klasse für Numpy Ndarray
Numpy + Atlas installieren
[Python] Numpy Memo