numpy均匀分布_Python计算类库(Numpy)
生活随笔
收集整理的這篇文章主要介紹了
numpy均匀分布_Python计算类库(Numpy)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python計算類庫(Numpy)
Python計算庫(Numpy)思維導圖
1. Numpy是什么?
NumPy(Numerical Python的縮寫)是一個開源的Python科學計算庫。使用NumPy,就可以很自然地使用數組和矩陣。 NumPy包含很多實用的數學函數,涵蓋線性代數運算、傅里葉變換和隨機數生成等功能
這個庫的前身是1995年就開始開發的一個用于數組運算的庫。經過了長時間的發展,基本上成了絕大部分Python科學計算的基礎包,當然也包括所有提供Python接口的深度學習框架
2. 為什么使用Numpy?
a) 便捷:
- 對于同樣的數值計算任務,使用NumPy要比直接編寫Python代碼便捷得多。這是因為NumPy能夠直接對數組和矩陣進行操作,可以省略很多循環語句,其眾多的數學函數也會讓編寫代碼的工作輕松許多
b) 性能:
- NumPy中數組的存儲效率和輸入輸出性能均遠遠優于Python中等價的基本數據結構(如嵌套的list容器)。其能夠提升的性能是與數組中元素的數目成比例的。對于大型數組的運算,使用NumPy的確很有優勢。對于TB級的大文件,NumPy使用內存映射文件來處理,以達到最優的數據讀寫性能
c) 高效:
- NumPy的大部分代碼都是用C語言寫成的,這使得NumPy比純Python代碼高效得多
注意:
- NumPy也有其不足之處,由于NumPy使用內存映射文件以達到最優的數據讀寫性能,而內存的大小限制了其對TB級大文件的處理;此外,NumPy數組的通用性不及Python提供的list容器。因此,在科學計算之外的領域,NumPy的優勢也就不那么明顯
3. Numpy的安裝:
(1)官網安裝:http://www.numpy.org/
(2)pip 安裝:pip install numpy
(3)LFD安裝,針對windows用戶:http://www.lfd.uci.edu/~gohlke/pythonlibs/
(4)Anaconda安裝(推薦),Anaconda里面集成了很多關于python科學計算的第三方庫,主要是安裝方便。下載地址:https://www.anaconda.com/download/
4. numpy 基礎:
NumPy的主要對象是同種元素的多維數組。這是一個所有的元素都是一種類型。在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank)。NumPy的數組類被稱作 ndarray(矩陣也叫數組) 。通常被稱作數組。常用的ndarray對象屬性有:ndarray.ndim(數組軸的個數,軸的個數被稱作秩),ndarray.shape(數組的維度。這是一個指示數組在每個維度上大小的整數元組。
Numpy的數據類型:
例如:一個n行m列的矩陣:
- .ndim
- .shape
- .size
- .dtype
Numpy內置的特征碼:
- int8, int16, int32,int64 可以由字符串’i1’, ‘i2’,’i4’, ‘i8’代替,其余的以此類推
5. 創建數組并查看其屬性:
(1) 用np.array從python列表和元組創建數組:
- 例:
- import numpy as np a = np.array([[1,2,3], [4, 5, 6]], dtype=int) print(a.shape) # a.ndim, a.size, a.dtype
- 例:
- import numpy as np a = np.array([(1,2,3), (4, 5, 6)], dtype=float) print(a.shape) # a.ndim, a.size, a.dtype
(2) 用np.arange().reshape()創建數組:
- 例:
- import numpy as np a = np.arange(10).reshape(2, 5) # 創建2行5列的二維數組,
也可以創建三維數組,
a = np.arange(12).reshape(2,3,2)
print(a)
(3)用np.random.randint(最小值,最大值,個數,類型).reshape(#,#)
- 左閉右開
- 隨機整數
(4)用np.random.rand(#).reshape(#,#)
- 左閉右開
- [0,1)均勻分布(小數)
- 個
(5)用np.random.randn(#)
- 左閉右開
- 標準正態分布
- 均值為0,方差為1
(6)用np.emty(#),reshape(#)
- 固定值#生成(無限趨近于零)
(7)用np.ones(#),reshape(#)
- 固定值1生成
- 個
(8)用np.zeros(),reshape(#)
- 固定值0生成
- 個
(6)用np.emty(),reshape(#)
- 固定值生成
6. 基本運算:
array.sum()
- 所有值累加和
- array.sum(0)
- 每一列的累加和
- array.sum(1)
- 每一行的累加和
+
- array+array
-
- array-array
*
- np.dot(array,array)
T
- array.T
linalg.inv
- np.linalg.inv(array)
7. 常用函數:
import numpy as np
array = np.random.randint(1,10,9).reshape(3,3) print(np.where(array>5,array,0))
8、索引、切片、迭代
索引:
- import numpy as np a = arange(10)**3 a[2] a[2:5] a[:6:2] = -1000 a[ : :-1] for i in a:
- 多維數組的索引
- b = np.arange(20).reshape(5,4) b[2,3] b[0:5, 1] b[ : ,1] b[1:3, : ]
當少于軸數的索引被提供時,確失的索引被認為是整個切片
b[-1] #相當于b[-1,:]
b[i] 中括號中的表達式被當作 i 和一系列 : ,來代表剩下的軸。NumPy也允許你使用“點”像 b[i,...] 。
點 (…)代表許多產生一個完整的索引元組必要的分號。如果x是
秩為5的數組(即它有5個軸),那么:x[1,2,…] 等同于 x[1,2,:,:,:],x[…,3] 等同于 x[:,:,:,:,3],x[4,…,5,:] 等同 x[4,:,:,5,:].
- 三維數組的索引:
- c = np.arange(12).reshape(2,3,2) c[1] c[2,1] # 等價于c[2][1] c[2,1,1] # 等價于c[2][1][1]
通過數組索引
d = np.arange(10)**2 e = np.array ([3, 5, 6])
切片(起始值,結束值,最后值):
- 實例:
- 取第一行所有值:
- array[0]
- 取第一列所有值:
- array[:,0]
- 取第一行所有值:
- 取第一行和第三行:
- array[0::2,]
- 取第二列和第四列:
- array[::,1::2]
- 取第一行和第三行:
- 取第一行和第三行的取第二列和第四列:
- array[0::2,1::2]
- 取第一行和第三行的取第二列和第四列:
迭代:
- for i in range(0,array.shape[0]): for j in range (0,array.shape[1]): print(array[i][j],end="t") print()
9. 形狀操作:
ravel()
- array.ravel()
vstack()
- np.vstack((array,array))
hstack()
- np.hstack((array,array))
stack()
- np.stack((array,array,axis=0))
split()
- np.split(array,#)
hsplit()
- np.hsplit(array,#)
vsplit()
- np.vsplit(array,#)
總結
以上是生活随笔為你收集整理的numpy均匀分布_Python计算类库(Numpy)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地址总线是单向还是双向_三端双向交流开关
- 下一篇: python print放同一行_pyt