Numpy學習筆記
1.基本操作
1.1列表轉(zhuǎn)為矩陣:np.array(list)
1.2維度:array.ndim
1.3行數(shù)和列數(shù):array.shape
1.4元素個數(shù):array.size
2.創(chuàng)建array
2.1一維array創(chuàng)建:np.array(list,dtype=np.int32)????????????? #np.int默認int32
2.2多維array創(chuàng)建:np.array(list1,List2)
2.3創(chuàng)建全零數(shù)組:np.zeros((valu1,valu2))???? #生成value1行value2列全零矩陣
2.4創(chuàng)建全1數(shù)組:np.ones((valu1,valu2),dtype=np.int)
2.5創(chuàng)建全空數(shù)組::np.empty((valu1,valu2))
2.6創(chuàng)建連續(xù)數(shù)組:np.arange(a1,an,步長)
2.7reshape改變數(shù)據(jù)形狀:array.reshape((valu1,valu2))
2.8創(chuàng)建連續(xù)型數(shù)據(jù):np.linspace(1,10,20) #開始端1,結(jié)束端10,分割成20個數(shù)據(jù)
2.9Linspace的reshape操作:array.reshape((valu1,valu2))
3.Numpy基本運算
3.1一維矩陣的運算
3.2多維矩陣的運算:(1)np.dot(ndarray1,ndarray2)?????? (2)a.dot(b)
查找時,axis為0,以列為查找單位;axis為1時,以行為查找單位。Array, axis=0 or 1
3.3基本計算:
最小元素索引np.argmin(array)
最大元素索引np.argmax(array)
整個矩陣的均值np.mean(array) or np.average(array) or array.mean()
中位數(shù)np.median(array)
累加np.cumsum(array)
累差np.diff(array)
矩陣每一行排序從小到大np.sort(array)
矩陣轉(zhuǎn)置np.transpose(array) or array.T
Clip:np.clip(Array,Array_min,Array_max)
clip(Array,Array_min,Array_max)
將Array_min<X<Array_max? X表示矩陣A中的數(shù),如果滿足上述關(guān)系,則原數(shù)不變。
否則,如果X<Array_min,則將矩陣中X變?yōu)?/span>Array_min;
如果X>Array_max,則將矩陣中X變?yōu)?/span>Array_max.
4.NumpyS索引與切片
打印列,進行轉(zhuǎn)置即可:for column in array.T:
多維轉(zhuǎn)一維:array.flatten()????????? #array.flat是一個迭代器
5.Numpy array合并
5.1數(shù)組合并
上下合并:np.vstack((array1,array2))
左右合并:np.hstack((array1,array2))
5.2數(shù)組轉(zhuǎn)矩陣:array[np.newaxis,:]
5.3多個矩陣合并:np.concatenate((array1,array2,…),axis=0 0r 1)? ?#0時縱向合并;1時橫向合并???
6.Numpy array分割
6.1構(gòu)造3行4列矩陣:np.arange(12).reshape((3,4))??????????? #范圍0~11
6.2等量分割:np.split(array,number,axis=1)??? ?????? ????????????? #縱向分割的axis
np.split(array,number,axis=0)???????? ???????????????????? ???????????????????? #橫向分割的axis
6.3不等量分割:np.array_split(array1,number,axis=1)
6.4其他分割方式:np.vsplit(array1,number)?? ?????? ????????????? #橫向分割
Np.hsplit(array1,number) ?????? ??????????????????????????? ???????????????????? #縱向分割
7.Numpy copy與=
7.1“=”賦值有關(guān)聯(lián)性(改變其中任意一個都會改變其他的數(shù)據(jù),無論程序先后):
import numpy as np
a = np.arange(4)
print(a) # [0 1 2 3]
b = a
c = a
d = b
a[0] = 11
print(a) ????????????? # [11? 1? 2? 3]
print(b) ?????? # [11? 1? 2? 3]
print(c) ????????????? # [11? 1? 2? 3]
print(d)???????? # [11? 1? 2? 3]
7.2cope()沒有關(guān)聯(lián)性:b=a.copy()
8.廣播機制
numpy數(shù)組間的基礎(chǔ)運算是一對一,也就是a.shape==b.shape,但是當兩者不一樣的時候,就會自動觸發(fā)廣播機制,如下例子:
from numpy import array
a = array([[ 0, 0, 0],
?????????? [10,10,10],
?????????? [20,20,20],
?????????? [30,30,30]])
b = array([0,1,2])
print(a+b)
運行結(jié)果:
[[ 0? 1? 2]
?[10 11 12]
?[20 21 22]
?[30 31 32]]
9.常用函數(shù)
9.1np.bincount()#統(tǒng)計索引出現(xiàn)次數(shù)
x = np.array([1, 2, 3, 3, 0, 1, 4])
np.bincount(x)
結(jié)果:
array([1, 2, 1, 2, 1], dtype=int64)9.2np.argmax()numpy.argmax(array1,axis=None,out=None)
當axis默認時,返回最大值的索引;axis=0時,按列操作;axis=1時,按行操作
當最大元素重復出現(xiàn),返回第一個最大值索引
9.3求取精度
np.around(list,decimals=number)
實例:
np.around([-0.6,1.2798,2.357,9.67,13], decimals=0)
array([-1.,? 1.,? 2., 10., 13.])???????????? #負數(shù)進位取絕對值大的decimals表示指定保留有效數(shù)的位數(shù),當超過5就會進位(此時包含5)
當decimals為負數(shù)時,實例:
np.around([1,2,5,6,56], decimals=-1)
array([ 0,? 0,? 0, 10, 60])
發(fā)現(xiàn)沒,當超過5時候(不包含5),才會進位!-1表示看一位數(shù)進位即可,那么如果改為-2呢,那就得看兩位!
np.around([1,2,5,50,56,190], decimals=-2)
array([? 0,?? 0,?? 0,?? 0, 100, 200])
看到?jīng)],必須看兩位,超過50才會進位,190的話,就看后面兩位,后兩位90超過50,進位,那么為200!
9.4取整:np.floor(list)?????????? #返回數(shù)組
負數(shù)取整向左
9.5取上限:np.ceil(list)
9.6查找:np.where(np.array(list)>0,np.array(list),0)?? 利用np.where實現(xiàn)小于0的用0填充,大于0的數(shù)不變