Detaillierte Erläuterung der Funktionsweise von Arrays durch die Python-Numpy-Bibliothek

爱喝马黛茶的安东尼
Freigeben: 2019-08-30 17:29:22
nach vorne
4880 Leute haben es durchsucht

Detaillierte Erläuterung der Funktionsweise von Arrays durch die Python-Numpy-Bibliothek

1. Einführung

NumPy (Numerical Python) ist eine Erweiterungsbibliothek der Python-Sprache, die eine große Anzahl unterstützt zahlreiche dimensionale Array- und Matrixoperationen sowie eine große Anzahl mathematischer Funktionsbibliotheken für Array-Operationen. Die Hauptdatenstruktur ist das ndarray-Array.

NumPy wird häufig zusammen mit SciPy (Scientific Python) und Matplotlib (Plotbibliothek) verwendet, und diese Kombination wird häufig als Ersatz für MatLab verwendet.

SciPy ist eine Open-Source-Python-Algorithmusbibliothek und ein mathematisches Toolkit. SciPy enthält Module für Optimierung, lineare Algebra, Integration, Interpolation, spezielle Funktionen, schnelle Fourier-Transformation, Signalverarbeitung und Bildverarbeitung, Lösung gewöhnlicher Differentialgleichungen und andere in Wissenschaft und Technik häufig verwendete Berechnungen.

Matplotlib ist eine visuelle Schnittstelle für die Programmiersprache Python und ihr numerisches Mathematik-Erweiterungspaket NumPy.

2. Erstellen

Erstellen Sie ein eindimensionales Array

(1) Direkt erstellen: np.array([1, 2, 3, 4, 5, 6])

(2) Erstellen Sie eine Konstante aus der Liste von Python: np.array(list([1, 2, 3, 4, 5, 6]))

Eindimensionale Wertdaten

(1) Erstellen Sie einen konstanten Wert mit 0: np.zeros(n,dytpe=float/int)

(2) Erstellen Sie einen konstanten Wert mit 1 Wert: np.ones(n)

(3) Erstellen Sie ein leeres Array: np.empty(4)

Erstellen Sie ein Array mit zunehmenden Elementen

( 1) Inkrementelles Array beginnend bei 0: np.arange(8)

(2) Gegebenes Intervall, benutzerdefinierte Schrittgröße: np.arange(0,1,0.2)

(3 ) Passen Sie bei gegebenem Intervall die Zahl an: np.linspace(-1,1,50)

Erstellen Sie ein mehrdimensionales Array: Erstellen Sie ein eindimensionales Array und fügen Sie es dem mehrdimensionalen Array hinzu

# 数组的结构一定是np.array([]) 无论数组中间存放的是多少“层”数据
# 二维数组相当于存放的是“两层”数组而已
arr1=np.array(list([1, 2, 3, 4, 5]))
arr2=np.array([arr1,[1,0,0,1,0]])               # 2*5的两维数组
arr3=np.array(list([[0,0,1,1,1],[1,1,1,0,0],[2,3,4,5,6]]))    # 3*5的两维数组
arrx=np.array([arr1,list([1, 2, 3, 4, 5],[1,1,1,0,0])])     # 报错
arry=np.array([list([[ 1,2,3,  7, 11],[2,3,4,5,6]]),[1, 2, 3, 4, 5]]) # 报错
Nach dem Login kopieren

Verwandte Empfehlungen: „Python-Video-Tutorial

Erstellen Sie (n*m) dimensionale Daten mit konstanten Werten

(1) Erstellen Sie a konstanter Wert von 0: np.zeros((n*m),dytpe=float/int)

(2) Erstellen Sie einen konstanten Wert mit 1: np.ones((n*m))

(3 )Erstellen Sie ein leeres Array: np.empty((n*m))

Erstellen Sie ein Array von Zufallszahlen

Generieren Sie einen Zufallszahlen-Seed:

(1) np.random.seed()

(2) np.random.RandomState()

Zufallszahlen generieren:

Detaillierte Erläuterung der Funktionsweise von Arrays durch die Python-Numpy-Bibliothek

Generieren mit Zufallsarray mit regelmäßiger Verteilung

(1) Binomialverteilung: np.random.binomial(n, p, size)

(2) Normalverteilung: np. random.normal(loc , scale, size)

Konvertieren Sie die CSV-Datei in ein Array oder Array

Verwenden Sie np.genfromtxt('csv file name', delimiter = 'delimiter in der Datei') Funktion Konvertieren Sie die Datei in ein Array

 csv_array = np.genfromtxt('sample.csv', delimiter=',')
 print(csv_array)
Nach dem Login kopieren

3. Transformation des Arrays

Generieren Sie die Funktion der Array/Matrix-Transposition, d. h. die Austausch von Zeilen- und Spaltennummern, verwenden Sie .T

a = np.array([[32, 15, 6, 9, 14], 
              [12, 10, 5, 23, 1],
              [2, 16, 13, 40, 37]])
print(a.T)
-------------------
# 结果如下
[[32 12  2]
 [15 10 16]
 [ 6  5 13]
 [ 9 23 40]
 [14  1 37]]
Nach dem Login kopieren

Ändern Sie die Form des Arrays:

(1) arr.resize(n,m): Die arr.resize(n,m )-Funktion ändert das Array an Ort und Stelle und erfordert: Die Anzahl der Elemente muss konsistent sein

a=np.arange(8)
a.resize(2,4)
print(a)
---------------------------
[[0 1 2 3]
 [4 5 6 7]]
Nach dem Login kopieren

(2) arr.reshape(n,m): Wenn der Parameter einer bestimmten Dimension -1 ist, bedeutet dies, dass Die Gesamtzahl der Elemente wird gemäß der anderen Dimension berechnet.

a=np.arange(8).reshape(-1,1)
print(a)
-----------------
[[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]]
Nach dem Login kopieren

wird eine sein. Die Dimension wird auf zwei Dimensionen erhöht: np.newaxis

np.newaxis bedeutet eigentlich, die Dimension direkt zu erhöhen . Wir fügen dem Array im Allgemeinen nicht zu viele Dimensionen hinzu. Hier ist ein Beispiel für die Vergrößerung einer Dimension auf zwei Dimensionen:

(1) Zeilendimension erhöhen: arr[np.newaxis, :]

(2) Spaltendimension erhöhen: arr[: , np.newaxis]

a=np.arange(8)
a             # array([0, 1, 2, 3, 4, 5, 6, 7])
a.shape           # (8,)
a[np.newaxis, :]      # array([[0, 1, 2, 3, 4, 5, 6, 7]])
a.shape           # (8,)
a[: , np.newaxis]     # array([[0],[1],[2],[3],[4],[5],[6],[7]])
a.shape           # (8,)
Nach dem Login kopieren

Dimensionalität reduzieren: arr.ravel()

Wenn die Funktion arr.ravel() Dimensionen reduziert: Standardmäßig wird ein neues Array in Zeilenreihenfolge generiert (d. h. zeilenweise gelesen); wenn der Parameter „F“ übergeben wird, wird die Spaltenreihenfolge reduziert

a=np.array([[1,2],[3,4]])
a.ravel()       
a.ravel('F')      
----------------------------
# 结果 array([1, 2, 3, 4])
# 结果 array([1, 3, 2, 4])
Nach dem Login kopieren

4. Berechnung

Berechnungsoperationen am Array durchführen

(1) Elemente addieren und subtrahieren

a=np.arange(8).reshape(2,4)       # array([[0, 1, 2, 3], [4, 5, 6, 7]])
b=np.random.randint(8,size=(2,4))   # array([[1, 2, 5, 3], [4, 1, 0, 6]])
a+b
a-b
----------------------------
# a+b和a-b结果分别是:
array([[ 1,  3,  7,  6],
       [ 8,  6,  6, 13]])
array([[-1, -1, -3,  0],
       [ 0,  4,  6,  1]])
Nach dem Login kopieren

(2) Multiplikation: Elemente quadrieren/multiplizieren Matrix

a=np.arange(8).reshape(2,4)       # array([[0, 1, 2, 3], [4, 5, 6, 7]])
b=np.random.randint(8,size=(2,4))   # array([[1, 2, 5, 3], [4, 1, 0, 6]])
a**2
a*b
-----------------------
# a矩阵平方/a*b矩阵中元素相乘结果分别:
array([[ 0,  1,  4,  9],
       [16, 25, 36, 49]])
array([[ 0,  2, 10,  9],
       [16,  5,  0, 42]])
Nach dem Login kopieren

(3) Matrix*matrix:

# 要求a矩阵的行要等于b矩阵的列数;且a矩阵的列等于b矩阵的行数
a=np.arange(8).reshape(2,4)       # array([[0, 1, 2, 3], [4, 5, 6, 7]])
b=np.random.randint(8,size=(4,2))   # array([[3, 0],[3, 3],[5, 6],[6, 7]])
c1 = np.dot(a,b)
c2 = a.dot(b)
----------------------
# ab矩阵相乘的结果:c1=c2 
array([[ 31,  36],
     [ 99, 100]])
Nach dem Login kopieren

(4) Logische Berechnung

[Hinweis] Die Liste kann nicht als Ganzes verwendet werden, um logische Urteile darüber zu fällen einzelne Elemente darin!

# 结果返回:一个数组,其中每个元素根据逻辑判断的布尔类型的结果
a > 3 
-----------------------------
# 结果如下:
array([[False, False, False, False],
     [ True,  True,  True,  True]])
Nach dem Login kopieren

5. Holen Sie sich den Wert

, um ein Element in einem eindimensionalen Array zu erhalten: Die Operation ist die gleiche wie beim Index der Liste

a = np.array([5, 2, 7, 0, 11])
a[0]      # 结果为 5
a[:4]     # 结果为 从头开始到索引为4结束
a[2:]     # 结果为 从索引为2的开始到结尾
a[::2]      # 结果为 从头开始到结尾,每2个取一个值
Nach dem Login kopieren

um ein mehrdimensionales Array zu erhalten. Ein Element, ein bestimmter Zeilen- oder Spaltenwert

a = np.array([[32, 15, 6, 9, 14], 
         [12, 10, 5, 23, 1],
         [2, 16, 13, 40, 37]])
a[2,1]     # 结果是一个元素 16
a[2][1]    # 结果是一个元素 16
a[1]      # 第2行 array([12, 10,  5, 23,  1])
a[:,2]   # 取出全部行,第2列 [15,10,16]
a[1:3, :]   # 取出[1,3)行,全部列
a[1,1:]    # array([10,  5, 23,  1])
Nach dem Login kopieren

erhält den

# 需要注意的是,我们数据进行逻辑计算操作得到的仍然是一个数组
# 如果我们想要的是一个过滤后的数组,就需要将"逻辑判断"传入数组中
a = np.array([[32, 15, 6, 9, 14], 
              [12, 10, 5, 23, 1],
              [2, 16, 13, 40, 37]])
a[a > 3]
a[(a > 3) | (a < 2)]  
------------------------------
# 结果分别是:
array([32, 15,  6,  9, 14, 12, 10,  5, 23, 16, 13, 40, 37])
array([32, 15,  6,  9, 14, 12, 10,  5, 23,  1, 16, 13, 40, 37])
Nach dem Login kopieren

, der die logische Operation erfüllt: Das Ergebnis wird Zeile für Zeile ausgegeben

a = np.array([[32, 15, 6, 9, 14], 
         [12, 10, 5, 23, 1],
         [2, 16, 13, 40, 37]])
for x in a:
    print(x)
--------------------
[32 15  6  9 14]
[12 10  5 23  1]
[ 2 16 13 40 37]
Nach dem Login kopieren

6. Kopieren/Teilen/Zusammenführen

Kopieren: arr.cope()

Teilen:

(1) Gleichmäßig geteilt: np.split(arr, n, axis=0 /1) (Das heißt, nur wenn die Anzahl der Zeilen oder Spalten durch n geteilt werden kann)

(2) Ungleiche Teilung: np.array_split (arr, n) Standardmäßig ist es zeilenweise in n Teile unterteilt

a = np.array([[32, 15, 6, 9, 14, 21], 
         [12, 10, 5, 23, 1, 10],
         [2, 16, 13, 40, 37, 8]])
              
# 可以看到a矩阵是(3*6),所以使用np.split()只能尝试行分成3份;或者列分成2/3/6份 
np.split(a,3,axis=0)  
np.split(a,3,axis=1)
np.array_split(a,2)
np.array_split(a,4,axis=1)
-------------------------------------------
[array([[32, 15,  6,  9, 14, 21]]),
 array([[12, 10,  5, 23,  1, 10]]),
 array([[ 2, 16, 13, 40, 37,  8]])]
   
[array([[32, 15],
        [12, 10],
        [ 2, 16]]), array([[ 6,  9],
        [ 5, 23],
        [13, 40]]), array([[14, 21],
        [ 1, 10],
        [37,  8]])]
        
[array([[32, 15,  6,  9, 14, 21],
        [12, 10,  5, 23,  1, 10]]), array([[ 2, 16, 13, 40, 37,  8]])]
        
[array([[32, 15],
        [12, 10],
        [ 2, 16]]), array([[ 6,  9],
        [ 5, 23],
        [13, 40]]), array([[14],
        [ 1],
        [37]]), array([[21],
        [10],
        [ 8]])]
Nach dem Login kopieren


Merge: np.concatenate((arr1, arr2, arr3), axis=0/1) By Standardmäßig ist es unterhalb der Daten verbunden

a=np.random.rand(2,3)
b=np.random.randint(1,size=(2,3))
np.concatenate((a,b,a))         # 接在下面
np.concatenate((a,b,a),axis=1)      # 接在后面
------------------------
array([[0.95912866, 0.81396527, 0.809493  ],
       [0.4539276 , 0.24173315, 0.63931439],
       [0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        ],
       [0.95912866, 0.81396527, 0.809493  ],
       [0.4539276 , 0.24173315, 0.63931439]])
array([[0.95912866, 0.81396527, 0.809493  , 0.        , 0.        ,
        0.        , 0.95912866, 0.81396527, 0.809493  ],
       [0.4539276 , 0.24173315, 0.63931439, 0.        , 0.        ,
        0.        , 0.4539276 , 0.24173315, 0.63931439]])
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Funktionsweise von Arrays durch die Python-Numpy-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage