numpy學習總結

numpy用法

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

建立array

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

經常使用用法

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) 從新定義矩陣的形狀3d

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

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

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

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就變成7orm

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)

迭代元素ip

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,:]這種形式it

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() 從新開闢一塊內存空間,幾者之間互不影響

相關文章
相關標籤/搜索