Heim > Backend-Entwicklung > Python-Tutorial > Detaillierte Einführung in die allgemeine Verwendung von Numpy

Detaillierte Einführung in die allgemeine Verwendung von Numpy

高洛峰
Freigeben: 2017-03-20 11:58:43
Original
1350 Leute haben es durchsucht

Einführung in Numpy

Die Existenz von Numpy sorgt dafür, dass Python über leistungsstarke Matrixberechnungsfunktionen verfügt, nicht weniger als Matlab.
Offizielles Dokument (https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)

Einführung in verschiedene Verwendungsmöglichkeiten

Zuallererst in Numpy Datentyp , ndarray-Typ, unterscheidet sich von array.array in der Standardbibliothek.

Einige Eigenschaften von ndarray

ndarray.ndim
die Anzahl der Achsen (Dimensionen) des Arrays In der Python-Welt. Die Anzahl der Dimensionen wird als Rang bezeichnet.
ndarray.shape
die Dimensionen des Arrays. Dies ist ein Tupel von ganzen Zahlen, die die Größe des Arrays in jeweils Dimension. Für eine Matrix mit n Zeilen und m Spalten beträgt die Form (n,m). Die Länge des Formtupels ist daher der Rang oder die Anzahl der Dimensionen, ndim.
ndarray.sizedie Gesamtzahl der Elemente des Arrays. Dies entspricht dem Produkt der Elemente der Form.

ndarray.dtypeein Objekt, das den Typ der Elemente in beschreibt Das Array. Man kann Dtypes mit Standard-Python-Typen erstellen oder angeben. Numpy.int32, numpy.int16 und numpy sind einige Beispiele.
ndarray.itemsize
die Größe in Bytes jedes Elements des Arrays. Beispielsweise hat ein Array von Elementen vom Typ float64 die Elementgröße 8 (=64/8), während eines davon Typ complex32 hat itemsize 4 (=32/8). Es entspricht ndarray.dtype.itemsize.
ndarray.data
Der Puffer enthält normalerweise die tatsächlichen Elemente des Arrays Dieses Attribut muss nicht verwendet werden, da wir über Indizierungsfunktionen auf die Elemente in einem Array zugreifen. 🎜>Geben Sie den Typ beim Erstellen an

Erstellen Sie einige spezielle Matrizen

>>> import numpy as np>>> a = np.array([2,3,4])>>> a
array([2, 3, 4])>>> a.dtype
dtype('int64')>>> b = np.array([1.2, 3.5, 5.1])>>> b.dtype
dtype('float64')
Nach dem Login kopieren

Erstellen Sie einige Matrizen mit spezifischen Regeln

Einige Grundoperationen
>>> b = np.array([(1.5,2,3), (4,5,6)])>>> b
array([[ 1.5,  2. ,  3. ],
       [ 4. ,  5. ,  6. ]])
Nach dem Login kopieren

Addition, Subtraktion, Multiplikation und trigonometrische Division

Funktion
>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )>>> c
array([[ 1.+0.j,  2.+0.j],
       [ 3.+0.j,  4.+0.j]])
Nach dem Login kopieren
Logische Operationen

>>> np.zeros( (3,4) )
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
>>> np.ones( (2,3,4), dtype=np.int16 )                # dtype can also be specified
array([[[ 1, 1, 1, 1],
        [ 1, 1, 1, 1],
        [ 1, 1, 1, 1]],
       [[ 1, 1, 1, 1],
        [ 1, 1, 1, 1],
        [ 1, 1, 1, 1]]], dtype=int16)
>>> np.empty( (2,3) )                                 # uninitialized, output may vary
array([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],
       [  5.30498948e-313,   3.14673309e-307,   1.00000000e+000]])
Nach dem Login kopieren
Matrixoperationen

Es gibt .*,./ usw. in Matlab

Aber in Numpy werden, wenn Sie +, - verwenden, bei der Ausführung von Matrixoperationen zuerst Operationen zwischen Elementen ausgeführt
>>> np.arange( 10, 30, 5 )
array([10, 15, 20, 25])
>>> np.arange( 0, 2, 0.3 )                 # it accepts float arguments
array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])

>>> from numpy import pi
>>> np.linspace( 0, 2, 9 )                 # 9 numbers from 0 to 2
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])
>>> x = np.linspace( 0, 2*pi, 100 )        # useful to evaluate function at lots of points
>>> f = np.sin(x)
Nach dem Login kopieren

Wenn Matrixoperationen ausgeführt werden müssen, handelt es sich normalerweise um eine Matrixmultiplikation

Einige häufig verwendete

globale Funktionen
>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False], dtype=bool)
Nach dem Login kopieren



Matrix Index-Slice-Traversal

>>> import numpy as np>>> A = np.arange(10,20)>>> B = np.arange(20,30)>>> A + B
array([30, 32, 34, 36, 38, 40, 42, 44, 46, 48])>>> A * B
array([200, 231, 264, 299, 336, 375, 416, 459, 504, 551])>>> A / B
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])>>> B / A
array([2, 1, 1, 1, 1, 1, 1, 1, 1, 1])
Nach dem Login kopieren
Matrix-Traversal

>>> A = np.array([1,1,1,1])
>>> B = np.array([2,2,2,2])
>>> A.reshape(2,2)
array([[1, 1],
       [1, 1]])
>>> B.reshape(2,2)
array([[2, 2],
       [2, 2]])
>>> A * B
array([2, 2, 2, 2])
>>> np.dot(A,B)
8
>>> A.dot(B)
8
Nach dem Login kopieren
Spezielle Operationen der Matrix

Matrixform ändern – umformen

>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([ 1.        ,  2.71828183,  7.3890561 ])
>>> np.sqrt(B)
array([ 0.        ,  1.        ,  1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([ 2.,  0.,  6.])
Nach dem Login kopieren
Der Unterschied zwischen Größenänderung und Neuformung

Größenänderung ändert die ursprüngliche Matrix, Neuformung führt nicht
>>> a = np.arange(10)**3
>>> a
array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729])
>>> a[2]
8
>>> a[2:5]
array([ 8, 27, 64])
>>> a[:6:2] = -1000    # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000
>>> a
array([-1000,     1, -1000,    27, -1000,   125,   216,   343,   512,   729])
>>> a[ : :-1]                                 # reversed a
array([  729,   512,   343,   216,   125, -1000,    27, -1000,     1, -1000])
>>> for i in a:
...     print(i**(1/3.))
...
nan
1.0
nan
3.0
nan
5.0
6.0
7.0
8.0
9.0
Nach dem Login kopieren

>>> import numpy as np
>>> b = np.arange(16).reshape(4, 4)
>>> for row in b:
...  print(row)
... 
[0 1 2 3]
[4 5 6 7]
[ 8  9 10 11]
[12 13 14 15]
>>> for node in b.flat:
...  print(node)
... 
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Nach dem Login kopieren
die Matrizen zusammen

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die allgemeine Verwendung von Numpy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage