網站首頁 編程語言 正文
Numpy是什么
很簡單,Numpy是Python的一個科學計算的庫,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用。其實,list已經提供了類似于矩陣的表示形式,不過numpy為我們提供了更多的函數。如果接觸過matlab、scilab,那么numpy很好入手。?
NumPy是一個高性能的科學計算和數據分析基礎包。
NumPy的安裝
NumPy的安裝相對簡單,我們可以通過Anaconda中的命令進行安裝,也可以通過“pip install numpy" 語句對NumPy進行安裝。如果需要驗證NumPy是否安裝成功,則可以在NumPy安裝完成后通過輸入“import numpy"后運行,看看是否輸出報錯提示。
多維數組
創建多維數組
import numpy as np #用array來創建 a=np.array([1,2,3]) #創建一維數組 print(a) b=np.array([[1,2,3],[4,5,6]]) #創建高維數組 print(b) #使用NumPy中的ones創建維度指定且元素全是1的數組 c=np.ones([2,3]) #全是1的數組 print(c) c[1,2]=3 #對數組中的元素進行覆蓋 print(c) #創建維度制定且元素全為0的數組 d=np.zeros([2,3]) print(d) #創建維度指定且元素全為隨機數的數組 e=np.empty([2,3]) print(e)
多維數組的常用屬性
ndim:返回統計的數組維數,即維度的數量
#創建維度指定且元素全為隨機數的數組 e=np.empty([2,3]) print(e) print(e.ndim)
結果:
[[0. 0. 0.]
?[0. 0. 0.]]
2
shape:返回數組的維度值,對返回的結果使用一個數據類型為整型的元組來表示,比如一個二維數組返回的結果為(n,m),那么n和m表示數組中對應維度的數據的長度。如果使用shape輸出的是矩陣的維度,那么在輸出的(n,m) 中,n表示矩陣的行,m表示矩陣的列。
#創建維度指定且元素全為隨機數的數組 e=np.empty([2,3]) print(e) print(e.shape)
結果:
[[0. 0. 0.]
?[0. 0. 0.]]
(2, 3)
size:返回要統計的數組中的元素的總數量
#創建維度指定且元素全為隨機數的數組 e=np.empty([2,3]) print(e) print(e.size)
結果:
[[0. 0. 0.]
?[0. 0. 0.]]
6
dtype:返回數組中的元素的數據類型。不過其顯示的數據類型和我們之前定義的變量的數據類型名有所區別,因為這些數據類型都是使用NumPy 進行定義的,而在NumPy中表示數據類型使用的是numpy.int32、numpy.int16和numpy.float64這類格式的名字
#創建維度指定且元素全為隨機數的數組 e=np.empty([2,3]) print(e) print(e.dtype)
結果:
[[0. 0. 0.]
?[0. 0. 0.]]
float64
多維數組的基本操作
數組的算術運算
數組能夠直接進行加法、減法、乘法和除法算術運算
import numpy as np g=np.array([1,2,3]) h=np.array([4,5,6]) print("a-b-",a-b) #打印a-b的結果 print("a+b =",a+b) #打印a+b的結果 print("a/b =",a/b) #打印a/b的結果 print("a*b =",a*b) #打印a*b的結果
結果:
a-b- [-3 -3 -3]
a+b = [5 7 9]
a/b = [0.25 0.4 ?0.5 ]
a*b = [ 4 10 18]
?
Process finished with exit code 0
從上面的實例可以看出,雖然數組在構造上類似于矩陣,但是其運算和之前介紹的矩陣運算存在諸多不同:首先,矩陣是不存在除法運算的,但是數組能夠進行除法運算:其次,數組的乘法運算機制是通過將位置對應的元素相乘來完成的,和矩陣的乘法運算機制不同。下面來看看如何通過數組實現矩陣乘法運算。
a=np.array([1,2,3]) b=np.array([4,5,6]) print("a-b-",a-b) #打印a-b的結果 print("a+b =",a+b) #打印a+b的結果 print("a/b =",a/b) #打印a/b的結果 print("a*b =",a*b) #打印a*b的結果 c = a.dot(b) print("Matrix1: a*b =",c) #打印a*b的結果 d = np.dot(a,b) print("Matrix2: a*b",c) #打印a*b的結果在運行后,輸出的內容
結果:
a-b= [-3 -3 -3]
a+b = [5 7 9]
a/b = [0.25 0.4 ?0.5 ]
a*b = [ 4 10 18]
Matrix1: a*b = 32
Matrix2: a*b 32
?
Process finished with exit code 0
在以上代碼中使用了兩種方法來實現矩陣的乘法運算,其計算結果是一樣的。數組和矩陣的算術運算還有一個較大的不同點,就是數組可以直接和標量進行算術運算,但是在矩陣運算中是不可以的。
a = np.array([1,2,3]) print ("a * 2 =",a*2) print("a 1 2 =",a/2) print("a - 2 =",a-2) print("a + 2 =",a+2)
結果:
a * 2 = [2 4 6]
a 1 2 = [0.5 1. ?1.5]
a - 2 = [-1 ?0 ?1]
a + 2 = [3 4 5]
數組的自身運算
(1)min:默認找出數組的所有元素中值最小的元素,可以通過設置axis的值來按行或者列查找元素中的最小值。
(2) max:默認找出數組的所有元素中值最大的元素,可以通過設置axis的值來按行或者列查找元素中的最大值。
(3) sum:默認對數組中的所有元素進行求和運算,并返回運算結果,同樣可以通過設置axis的值來按行或者列對元素進行求和運算。
(4) exp:對數組中的所有元素進行指數運算。
(5) sqrt: 對數組中的所有元素進行平方根運算。
(6) square:對數組中的所有元素進行平方運算。
隨機數組
生成隨機數在我們平時的應用中是很有用的,在NumPy中有許多方法可以生成不同屬性的隨機數,以滿足在計算中使用隨機數字的需求。
(1) seed: 隨機因子,在隨機數生成器的隨機因子被確定后,無論我們運行多少次隨機程序,最后生成的數字都是一樣的,隨機因子更像把隨機的過程變成一種 偽隨機的機制,不過這有利于結果的復現。
(2) rand: 生成一個在[0,1)范圍內滿足均勻分布的隨機樣本數。
(3) randn:生成一個滿足平均值為0且方差為1的正太分布隨機樣本數。
(4)randint:在給定的范圍內生成類型為整數的隨機樣本數。
(5) binomial: 生成-個維度指定且滿足二項分布的隨機樣本數。
(6) beta:生成一個指定維度且滿足beta分布的隨機樣本數。
(7) normal: 生成一個指定維度且滿足高斯正太分布的隨機樣本數。
索引、切片、迭代
在數組中也有索引、切片和迭代,其操作過程和列表類似,不過多維數組相較于一維數組,在索引、切片和迭代等操作上會更復雜。
a = np.arange(10) print(a) #輸出整個數組 print(a[:5]) #輸出數組的前 五個元素 for i in a: #迭代輸出數組的全部元素 print (i)
結果:
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4]
0
1
2
3
4
5
6
7
8
9
?
Process finished with exit code 0
總結
原文鏈接:https://blog.csdn.net/ggj0727/article/details/116484987
相關推薦
- 2023-01-10 golang實現簡單的tcp數據傳輸_Golang
- 2022-12-25 python字典中items()函數用法實例_python
- 2022-06-19 Visual?Studio創建WPF項目_實用技巧
- 2022-07-24 Android中關于定時任務實現關閉訂單問題_Android
- 2022-02-10 C語言之初識指針_C 語言
- 2022-05-20 ASP.NET?MVC模式簡介_基礎應用
- 2022-08-15 棧(Stack)和隊列(Queue)的基本操作
- 2022-04-16 一起來看看C語言線性表的線性鏈表_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支