numpy學習總結


numpy用法

導入:import numpy as np
生成矩陣:array = np.array([[1,2,3],[4,5,6]])
矩陣維度:array.ndim
矩陣形狀:array.shape
矩陣大小:array.size
矩陣元素類型:array.dtype

創建array

a = np.array([1,2,3], dtype=np.int32)
dtype:指定數據類型
矩陣維度:創建時方括號的層數代表矩陣的維度

常用用法

zero = np.zeros((2, 3)) 生成兩行三列全為0的矩陣
one = np.empty((2, 3)) 生成兩行三列全為1的矩陣
empty = np.empty((3, 2)) 生成三行兩列全為接近於0但不是0的矩陣
e = np.arange(10) 此種用法與python中的range類似
h = np.arange(10).reshape(2, 4) 重新定義矩陣的形狀

矩陣操作(要求:兩個矩陣形狀相同)

arr1:矩陣1
arr2:矩陣2
加法:arr1 + arr2 按位相加
減法:arr1 - arr2 按位相減
乘法:arr1 * arr2 按位相乘
求冪:arr1 ** arr2 按位操作
除法:arr1 / arr2 按位相除
取余:arr1 % arr2 按位取余
取整:arr1 // arr2 按位取整
與數的操作:arr1 + 2 矩陣中的每位都與2操作
比較操作:arr1 > 3 判斷矩陣中那些元素大於3,返回一個布爾型的矩陣

矩陣運算(根據線性代數中的矩陣操作進行加減乘除)

arr1:矩陣1
arr2:矩陣2
矩陣乘法:np.dot(arr1, arr2)/arr1.dot(arr2)
轉置矩陣:arr1.T/np.transpose(arr1)
numpy中生成隨機數
arr1 = np.random.random((3, 2)) 生成三行兩列從0-1的隨機數
arr2 = np.random.normal(size=(3, 2)) 生成三行兩列符合標准正態分布的隨機數
arr3 = np.random.randint((0, 10, size=(3, 2))) 生成三行兩列0-10的隨機整數
單個矩陣求和:np.sum(arr1)
單個矩陣對列求和:np.sum(arr1, axis=0)
單個矩陣對行求和:np.sum(arr1, axis=1)
單個矩陣中求最大/最小值:np.max(arr1)/np.min(arr1)
求某個矩陣中最小值/最大值的索引:np.argmin(arr1)/np.argmax(arr1)
求矩陣的平均值:np.mean(arr1)/arr1.mean()
求矩陣中位數:np.median(arr1)
矩陣開方:np.sqrt(arr1)
矩陣排序:np.sort(arr1) 對每行進行排序
np.clip(arr1, 2, 7):對於arr1中的元素小於2就變成2,大於7就變成7

numpy索引

a = np.arange(2, 14):與python索引類似,用法可參照python中list用法
多維矩陣:
a[i]:表示第i+1行
a[i][j]:表示第i+1行第j+1列
a[:,j]:表示第j+1列
迭代行

for i in a:
	print(i)

迭代列

for i in a.T:
	print(i)

迭代元素

for i in a.flat:
	print(i)

array合並

垂直合並:np.vstack((arr1, arr2))
水平合並:np.hstack((arr1, arr2))
np.concatenate((arr1, arr2),axis=0):可自主指定合並方式,合並的array維度要相同,參數axis=0時縱向合並,參數axis=1時橫向合並。
一維array增加一個維度:np.newaxis
實例:

arr1 = np.arange(1,4)
arr1_2 = arr1[:,np.newaxis]
arr1_2變成三行一列
arr1_3 = arr1[np.newaxis,:]
arr1_3變成一行三列

np.atleast_2d(arr)/np.atleast_3d(arr):判斷arr是否最少為二維/三維array,如果不是轉換成arr[np.newaxis,:]這種形式

array分割

np.split(arr, 2, axis=1):按列分割,分成兩份
np.split(arr, 3, axis=0):按行分割,分成三份
np.array_split(arr, 2, axis=1):按列分割,分成兩份,不等分割
np.array_split(arr, 3, axis=0):按行分割,分成三份,不等分割
np.vsplit(arr, 3):按行分割
np.hsplit(arr, 2):按列分割

numpy的淺拷貝和深拷貝

淺拷貝:類似值引用,指向同一塊內存地址,只要一個改變大家都會改變
深拷貝:arr.copy() 重新開辟一塊內存空間,幾者之間互不影響


免責聲明!

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



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