Python矩陣和Numpy數組的那些事兒


大家好,我是IT共享者,人稱皮皮。今天給大家介紹矩陣和NumPy數組。

一、什么是矩陣?

使用嵌套列表和NumPy包的Python矩陣。矩陣是一種二維數據結構,其中數字按行和列排列。

二、Python矩陣

1. 列表視為矩陣

Python沒有矩陣的內置類型。但是,可以將列表的列表視為矩陣。

例:

A = [[1, 4, 5], 
    [-5, 8, 9]]

可以將此列表的列表視為具有2行3列的矩陣。

如圖:

2. 如何使用嵌套列表。

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]

print("A =", A) 
print("A[1] =", A[1])      # 第二行
print("A[1][2] =", A[1][2])   # 第二行的第三元素
print("A[0][-1] =", A[0][-1])   # 第一行的最后一個元素
column = [];        # 空 list
for row in A:
  column.append(row[2])   

print("3rd column =", column)

當運行程序時,輸出為:

三、NumPy數組

1. 什么是NumPy?

NumPy是用於科學計算的軟件包,它支持強大的N維數組對象。

在使用NumPy之前,需要先安裝它。

2. 如何安裝NumPy?

如果使用Windows,使用PyCharm 安裝NumPy,NumPy它帶有一些其他與數據科學和機器學習有關的軟件包。

成功安裝了NumPy,就可以導入和使用它。

NumPy提供數字的多維數組(實際上是一個對象)。

例 :

import numpy as np
a = np.array([1, 2, 3])
print(a)               # 輸出: [1, 2, 3]
print(type(a))         # 輸出: <class 'numpy.ndarray'>

NumPy的數組類稱為ndarray。

注:

NumPy的數組類稱為ndarray。

3. 如何創建一個NumPy數組?

有幾種創建NumPy數組的方法。

3.1 整數,浮點數和復數的數組

import numpy as np

A = np.array([[1, 2, 3], [3, 4, 5]])
print(A)

A = np.array([[1.1, 2, 3], [3, 4, 5]]) # 浮點數組
print(A)

A = np.array([[1, 2, 3], [3, 4, 5]], dtype = complex) # 復數數組
print(A)

運行效果:

3.2 零和一的數組

import numpy as np

zeors_array = np.zeros( (2, 3) )
print(zeors_array)
ones_array = np.ones( (1, 5), dtype=np.int32 ) // dtype
print(ones_array)      # 輸出: [[1 1 1 1 1]]

在這里,指定dtype了32位(4字節)。因此,該數組可以采用從到的值。-2-312-31-1

3.使用arange()和shape()

import numpy as np

A = np.arange(4)

print('A =', A)

B = np.arange(12).reshape(2, 6)

print('B =', B)

四、矩陣運算

兩個矩陣相加,兩個矩陣相乘以及一個矩陣轉置。在編寫這些程序之前,使用了嵌套列表。讓看看如何使用NumPy數組完成相同的任務。

兩種矩陣的加法

使用+運算符將兩個NumPy矩陣的對應元素相加。

import numpy as np

A = np.array([[2, 4], [5, -6]])
B = np.array([[9, -3], [3, 6]])
C = A + B      # 元素聰明的加法
print(C)

兩個矩陣相乘

為了將兩個矩陣相乘,使用dot()方法。

注意:用於數組乘法(兩個數組的對應元素的乘法),而不是矩陣乘法。

import numpy as np

A = np.array([[3, 6, 7], [5, -3, 0]])
B = np.array([[1, 1], [2, 1], [3, -3]])
C = A.dot(B)
print(C)

矩陣轉置

使用numpy.transpose計算矩陣的轉置。

import numpy as np

A = np.array([[1, 1], [2, 1], [3, -3]])
print(A.transpose())

注:

NumPy使的任務更加輕松。

五、案例

1. 訪問矩陣元素

與列表類似,可以使用索引訪問矩陣元素。讓從一維NumPy數組開始。

import numpy as np
A = np.array([2, 4, 6, 8, 10])

print("A[0] =", A[0])     # First element     
print("A[2] =", A[2])     # Third element 
print("A[-1] =", A[-1])   # Last element

運行該程序時,輸出為:

現在,讓看看如何訪問二維數組(基本上是矩陣)的元素。

import numpy as np

A = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

#  First element of first row
print("A[0][0] =", A[0][0])  

# Third element of second row
print("A[1][2] =", A[1][2])

# Last element of last row
print("A[-1][-1] =", A[-1][-1])

當運行程序時,輸出將是:

2. 訪問矩陣的行

import numpy as np

A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

print("A[0] =", A[0]) # First Row
print("A[2] =", A[2]) # Third Row
print("A[-1] =", A[-1]) # Last Row (3rd row in this case)

當運行程序時,輸出將是:

3. 訪問矩陣的列

import numpy as np

A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

print("A[:,0] =",A[:,0]) # First Column
print("A[:,3] =", A[:,3]) # Fourth Column
print("A[:,-1] =", A[:,-1]) # Last Column (4th column in this case)

當運行程序時,輸出將是:

注:

使用NumPy(而不是嵌套列表)可以更輕松地處理矩陣,而且甚至都沒有涉及基礎知識。建議詳細研究NumPy軟件包,尤其是當嘗試將Python用於數據科學/分析時。

六、總結

本文基於Python基礎,介紹了矩陣和NumPy數組,重點介紹了NumPy數組,如何去安裝NumPy模塊,如何去創建一個NumPy數組的兩種方式。

通過案例的分析,代碼的演示,運行效果圖的展示,使用Python語言,能夠讓讀者更好的理解。

讀者可以根據文章內容,自己實現。有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

代碼很簡單,希望對你學習有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM