适合初学者快速入门的Numpy实战全集
Numpy是一個用python實現(xiàn)的科學計算的擴展程序庫,包括:1、一個強大的N維數(shù)組對象Array;2、比較成熟的(廣播)函數(shù)庫;3、用于整合C/C++和Fortran代碼的工具包;4、實用的線性代數(shù)、傅里葉變換和隨機數(shù)生成函數(shù)。numpy和稀疏矩陣運算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了許多高級的數(shù)值編程工具,如:矩陣數(shù)據(jù)類型、矢量處理,以及精密的運算庫。專為進行嚴格的數(shù)字處理而產(chǎn)生。多為很多大型金融公司使用,以及核心的科學計算組織如:Lawrence Livermore,NASA用其處理一些本來使用C++,Fortran或Matlab等所做的任務(wù)。
好久沒來長文了,今天來一篇年終代碼長文,那么看完這一篇你將學到numpy的基本常用操作,下面一起來看吧,歡迎轉(zhuǎn)發(fā)支持,謝謝!!!(本文作者:光城)
本文目錄
1.Numpy基本操作1.1 列表轉(zhuǎn)為矩陣1.2 維度1.3 行數(shù)和列數(shù)()1.4 元素個數(shù)2.Numpy創(chuàng)建array2.1 一維array創(chuàng)建2.1 多維array創(chuàng)建2.2 創(chuàng)建全零數(shù)組2.3 創(chuàng)建全一數(shù)據(jù)2.4 創(chuàng)建全空數(shù)組2.5 創(chuàng)建連續(xù)數(shù)組2.6 reshape操作2.7 創(chuàng)建連續(xù)型數(shù)據(jù)2.8 linspace的reshape操作3.Numpy基本運算3.1 一維矩陣運算3.2 多維矩陣運算3.3 基本計算4.Numpy索引與切片5.Numpy array合并5.1 數(shù)組合并5.2 數(shù)組轉(zhuǎn)置為矩陣5.3 多個矩陣合并5.4 合并例子26.Numpy array分割6.1 構(gòu)造3行4列矩陣6.2 等量分割6.3 不等量分割6.4 其他的分割方式7.Numpy copy與 =7.1 =賦值方式會帶有關(guān)聯(lián)性7.2 copy()賦值方式?jīng)]有關(guān)聯(lián)性8.廣播機制9.常用函數(shù)
1.Numpy基本操作
1.1 列表轉(zhuǎn)為矩陣
import?numpy?as?np array?=?np.array([[1,3,5],[4,6,9] ])print(array)輸出:
[[1?3?5][4?6?9]]1.2 維度
print('number?of?dim:',?array.ndim)輸出:
number?of?dim:?21.3 行數(shù)和列數(shù)()
print('shape:',array.shape)輸出:
shape:?(2,?3)1.4 元素個數(shù)
print('size:',array.size)輸出:
size:62.Numpy創(chuàng)建array
2.1 一維array創(chuàng)建
import?numpy?as?np #?一維array a?=?np.array([2,23,4],?dtype=np.int32)?#?np.int默認為int32 print(a) print(a.dtype)輸出:
[?2?23??4] int322.1 多維array創(chuàng)建
#?多維array a?=?np.array([[2,3,4],[3,4,5]]) print(a)?#?生成2行3列的矩陣輸出:
[[2?3?4][3?4?5]]2.2 創(chuàng)建全零數(shù)組
a?=?np.zeros((3,4)) print(a)?#?生成3行4列的全零矩陣輸出:
[[0.?0.?0.?0.][0.?0.?0.?0.][0.?0.?0.?0.]]2.3 創(chuàng)建全一數(shù)據(jù)
#?創(chuàng)建全一數(shù)據(jù),同時指定數(shù)據(jù)類型 a?=?np.ones((3,4),dtype=np.int) print(a)輸出:
[[1?1?1?1][1?1?1?1][1?1?1?1]]2.4 創(chuàng)建全空數(shù)組
#?創(chuàng)建全空數(shù)組,其實每個值都是接近于零的數(shù) a?=?np.empty((3,4)) print(a)輸出:
[[0.?0.?0.?0.][0.?0.?0.?0.][0.?0.?0.?0.]]2.5 創(chuàng)建連續(xù)數(shù)組
#?創(chuàng)建連續(xù)數(shù)組 a?=?np.arange(10,21,2)?#?10-20的數(shù)據(jù),步長為2 print(a)輸出:
[10?12?14?16?18?20]2.6 reshape操作
#?使用reshape改變上述數(shù)據(jù)的形狀 b?=?a.reshape((2,3)) print(b)輸出:
[[10?12?14][16?18?20]]2.7 創(chuàng)建連續(xù)型數(shù)據(jù)
#?創(chuàng)建線段型數(shù)據(jù) a?=?np.linspace(1,10,20)?#?開始端1,結(jié)束端10,且分割成20個數(shù)據(jù),生成線段 print(a)輸出:
[?1.??????????1.47368421??1.94736842??2.42105263??2.89473684??3.368421053.84210526??4.31578947??4.78947368??5.26315789??5.73684211??6.210526326.68421053??7.15789474??7.63157895??8.10526316??8.57894737??9.052631589.52631579?10.????????]2.8 linspace的reshape操作
#?同時也可以reshape b?=?a.reshape((5,4)) print(b)輸出:
[[?1.??????????1.47368421??1.94736842??2.42105263][?2.89473684??3.36842105??3.84210526??4.31578947][?4.78947368??5.26315789??5.73684211??6.21052632][?6.68421053??7.15789474??7.63157895??8.10526316][?8.57894737??9.05263158??9.52631579?10.????????]]3.Numpy基本運算
3.1 一維矩陣運算
import?numpy?as?np #?一維矩陣運算 a?=?np.array([10,20,30,40]) b?=?np.arange(4) print(a,b) #?[10?20?30?40]?[0?1?2?3] c?=?a?-?b print(c) #?[10?19?28?37] print(a*b)?#?若用a.dot(b),則為各維之和 #?[??0??20??60?120] #?在Numpy中,想要求出矩陣中各個元素的乘方需要依賴雙星符號?**,以二次方舉例,即: c?=?b**2 print(c) #?[0?1?4?9] #?Numpy中具有很多的數(shù)學函數(shù)工具 c?=?np.sin(a) print(c) #?[-0.54402111??0.91294525?-0.98803162??0.74511316] print(b<2) #?[?True??True?False?False] a?=?np.array([1,1,4,3]) b?=?np.arange(4) print(a==b) #?[False??True?False??True]3.2 多維矩陣運算
a?=?np.array([[1,1],[0,1]]) b?=?np.arange(4).reshape((2,2)) print(a) ''' [[1?1][0?1]] ''' print(b) ''' [[0?1][2?3]] ''' #?多維度矩陣乘法 #?第一種乘法方式: c?=?a.dot(b) print(c) #?第二種乘法: c?=?np.dot(a,b) print(c) ''' [[2?4][2?3]] ''' #?多維矩陣乘法不能直接使用'*'號a?=?np.random.random((2,4))print(np.sum(a))?#?3.657010765991042 print(np.min(a))?#?0.10936760904735132 print(np.max(a))?#?0.9476048882750654print("a=",a) ''' a=?[[0.16607436?0.94760489?0.59649117?0.22698245][0.66494464?0.23447984?0.10936761?0.71106581]] '''print("sum=",np.sum(a,axis=1))?#?sum=?[1.93715287?1.7198579?] print("min=",np.min(a,axis=0))?#?min=?[0.16607436?0.23447984?0.10936761?0.22698245] print("max=",np.max(a,axis=1))?#?max=?[0.94760489?0.71106581]''' 如果你需要對行或者列進行查找運算, 就需要在上述代碼中為?axis?進行賦值。 當axis的值為0的時候,將會以列作為查找單元, 當axis的值為1的時候,將會以行作為查找單元。 '''3.3 基本計算
import?numpy?as?npA?=?np.arange(2,14).reshape((3,4)) print(A)#?最小元素索引 print(np.argmin(A))?#?0 #?最大元素索引 print(np.argmax(A))?#?11 #?求整個矩陣的均值 print(np.mean(A))?#?7.5 print(np.average(A))?#?7.5 print(A.mean())?#?7.5 #?中位數(shù) print(np.median(A))?#?7.5 #?累加 print(np.cumsum(A)) #?[?2??5??9?14?20?27?35?44?54?65?77?90] #?累差運算 B?=?np.array([[3,5,9],[4,8,10]]) print(np.diff(B)) ''' [[2?4][4?2]] ''' C?=?np.array([[0,5,9],[4,0,10]]) print(np.nonzero(B)) print(np.nonzero(C)) ''' #?將所有非零元素的行與列坐標分割開,重構(gòu)成兩個分別關(guān)于行和列的矩陣 (array([0,?0,?0,?1,?1,?1],?dtype=int64),?array([0,?1,?2,?0,?1,?2],?dtype=int64)) (array([0,?0,?1,?1],?dtype=int64),?array([1,?2,?0,?2],?dtype=int64)) ''' #?仿照列表排序 A?=?np.arange(14,2,-1).reshape((3,4))?#?-1表示反向遞減一個步長 print(A) ''' [[14?13?12?11][10??9??8??7][?6??5??4??3]] ''' print(np.sort(A)) ''' #?只是對每行進行遞增排序 [[11?12?13?14][?7??8??9?10][?3??4??5??6]] ''' #?矩陣轉(zhuǎn)置 print(np.transpose(A)) ''' [[14?10??6][13??9??5][12??8??4][11??7??3]] ''' print(A.T) ''' [[14?10??6][13??9??5][12??8??4][11??7??3]] ''' print(A) print(np.clip(A,5,9)) ''' clip(Array,Array_min,Array_max) 將Array_min<X<Array_max??X表示矩陣A中的數(shù),如果滿足上述關(guān)系,則原數(shù)不變。 否則,如果X<Array_min,則將矩陣中X變?yōu)锳rray_min; 如果X>Array_max,則將矩陣中X變?yōu)锳rray_max. [[9?9?9?9][9?9?8?7][6?5?5?5]] '''4.Numpy索引與切片
import?numpy?as?np A?=?np.arange(3,15) print(A) #?[?3??4??5??6??7??8??9?10?11?12?13?14] print(A[3]) #?6 B?=?A.reshape(3,4) print(B) ''' [[?3??4??5??6][?7??8??9?10][11?12?13?14]] ''' print(B[2]) #?[11?12?13?14] print(B[0][2]) #?5 print(B[0,2]) #?5 #?list切片操作 print(B[1,1:3])?#?[8?9]?1:3表示1-2不包含3for?row?in?B:print(row)''' [3?4?5?6] [?7??8??9?10] [11?12?13?14] ''' #?如果要打印列,則進行轉(zhuǎn)置即可 for?column?in?B.T:print(column) ''' [?3??7?11] [?4??8?12] [?5??9?13] [?6?10?14] ''' #?多維轉(zhuǎn)一維 A?=?np.arange(3,15).reshape((3,4)) #?print(A) print(A.flatten()) #?flat是一個迭代器,本身是一個object屬性 for?item?in?A.flat:print(item)我們一起來來總結(jié)一下,看下面切片取值方式(對應(yīng)顏色是取出來的結(jié)果):
5.Numpy array合并
5.1 數(shù)組合并
import?numpy?as?np A?=?np.array([1,1,1]) B?=?np.array([2,2,2]) print(np.vstack((A,B))) #?vertical?stack?上下合并,對括號的兩個整體操作。 ''' [[1?1?1][2?2?2]] ''' C?=?np.vstack((A,B)) print(C) print(A.shape,B.shape,C.shape) #?(3,)?(3,)?(2,?3) #?從shape中看出A,B均為擁有3項的數(shù)組(數(shù)列) #?horizontal?stack左右合并 D?=?np.hstack((A,B)) print(D) #?[1?1?1?2?2?2] print(A.shape,B.shape,D.shape) #?(3,)?(3,)?(6,) #?對于A,B這種,為數(shù)組或數(shù)列,無法進行轉(zhuǎn)置,需要借助其他函數(shù)進行轉(zhuǎn)置5.2 數(shù)組轉(zhuǎn)置為矩陣
print(A[np.newaxis,:])?#?[1?1?1]變?yōu)閇[1?1?1]] print(A[np.newaxis,:].shape)?#?(3,)變?yōu)?1,?3) print(A[:,np.newaxis]) ''' [[1][1][1]] '''5.3 多個矩陣合并
#?concatenate的第一個例子 print("------------") print(A[:,np.newaxis].shape)?#?(3,1) A?=?A[:,np.newaxis]?#?數(shù)組轉(zhuǎn)為矩陣 B?=?B[:,np.newaxis]?#?數(shù)組轉(zhuǎn)為矩陣 #?axis=0縱向合并 C?=?np.concatenate((A,B,B,A),axis=0) print(C) ''' [[1][1][1][2][2][2][2][2][2][1][1][1]] ''' #?axis=1橫向合并 C?=?np.concatenate((A,B),axis=1) print(C) ''' [[1?2][1?2][1?2]] '''5.4 合并例子2
#?concatenate的第二個例子 print("-------------") a?=?np.arange(8).reshape(2,4) b?=?np.arange(8).reshape(2,4) print(a) print(b) print("-------------") #?axis=0多個矩陣縱向合并 c?=?np.concatenate((a,b),axis=0) print(c) #?axis=1多個矩陣橫向合并 c?=?np.concatenate((a,b),axis=1) print(c) ''' [[0?1?2?3][4?5?6?7][0?1?2?3][4?5?6?7]] [[0?1?2?3?0?1?2?3][4?5?6?7?4?5?6?7]] '''6.Numpy array分割
6.1 構(gòu)造3行4列矩陣
import?numpy?as?np A?=?np.arange(12).reshape((3,4)) print(A) ''' [[?0??1??2??3][?4??5??6??7][?8??9?10?11]] '''6.2 等量分割
#?等量分割 #?縱向分割同橫向合并的axis print(np.split(A,?2,?axis=1)) ''' [array([[0,?1],[4,?5],[8,?9]]),?array([[?2,??3],[?6,??7],[10,?11]])] ''' #?橫向分割同縱向合并的axis print(np.split(A,3,axis=0)) #?[array([[0,?1,?2,?3]]),?array([[4,?5,?6,?7]]),?array([[?8,??9,?10,?11]])]6.3 不等量分割
print(np.array_split(A,3,axis=1)) ''' [array([[0,?1],[4,?5],[8,?9]]),?array([[?2],[?6],[10]]),?array([[?3],[?7],[11]])] '''6.4 其他的分割方式
#?橫向分割 print(np.vsplit(A,3))?#?等價于print(np.split(A,3,axis=0)) #?[array([[0,?1,?2,?3]]),?array([[4,?5,?6,?7]]),?array([[?8,??9,?10,?11]])] #?縱向分割 print(np.hsplit(A,2))?#?等價于print(np.split(A,2,axis=1)) ''' [array([[0,?1],[4,?5],[8,?9]]),?array([[?2,??3],[?6,??7],[10,?11]])] '''7.Numpy copy與 =
7.1 =賦值方式會帶有關(guān)聯(lián)性
import?numpy?as?np #?`=`賦值方式會帶有關(guān)聯(lián)性 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] print(b?is?a)?#?True print(c?is?a)?#?True print(d?is?a)?#?Trued[1:3]?=?[22,33] print(a)?#?[11?22?33??3] print(b)?#?[11?22?33??3] print(c)?#?[11?22?33??3]7.2 copy()賦值方式?jīng)]有關(guān)聯(lián)性
a?=?np.arange(4) print(a)?#?[0?1?2?3] b?=a.copy()?#?deep?copy print(b)?#?[0?1?2?3] a[3]?=?44 print(a)?#?[?0??1??2?44] print(b)?#?[0?1?2?3]#?此時a與b已經(jīng)沒有關(guān)聯(lián)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)輸出:
[[?0??1??2][10?11?12][20?21?22][30?31?32]]為什么是這個樣子?
這里以tile模擬上述操作,來回到a.shape==b.shape情況!
#?對[0,1,2]行重復(fù)3次,列重復(fù)1次 b?=?np.tile([0,1,2],(4,1)) print(a+b)輸出:
[[?0??1??2][10?11?12][20?21?22][30?31?32]]到這里,我們來給出一張圖:
也可以看這張圖:
是不是任何情況都可以呢?
當然不是,只有當兩個數(shù)組的trailing dimensions ?compatible時才會觸發(fā)廣播,否則報錯ValueError: frames are not aligned exception。
上面表達意思是尾部維度必須兼容!
尾部維度:
將多維數(shù)組右對齊!能夠上下對應(yīng),這部分就是尾部,而對應(yīng)的頭部維度,則是維度大的數(shù)組比維度小的數(shù)組多出來的維度!如下面實際例子:
?????????????axis:???0?????1???2 a??????(3d?array):?256?x?256?x?3 b??????(2d?array):???????256?x?3 a?+?b??(2d?array):?256?x?256?x?3兼容
they are equal, or one of them is 1
兼容兩層意思,深入研究,第一:they are equal
尾部維度相等!
?????????????axis:???0?????1???2 a??????(3d?array):?256?x?256?x?3 b??????(2d?array):???????256?x?3 a?+?b??(2d?array):?256?x?256?x?3第二:one of them is 1
像下面這個尾部維度不等,但是a或者b對應(yīng)的元素有1存在,那么也滿足兼容性!
?????????????axis:???0?????1???2 a??????(3d?array):?256?x?256?x?1 b??????(2d?array):????????1??x?3 a?+?b??(2d?array):?256?x?256?x?3也就是1可以和任意維度兼容!
廣播失敗:
?????????????axis:???0?????1???2 a1??????(3d?array):?256?x?256?x?1 b??????(2d?array):???????220?x?3 a1?+?b??ValueError失敗轉(zhuǎn)化
?????????????axis:???0?????1???2???3 a2??????(4d?array):?256?x?256?x?1?x?1 b??????(2d?array):???????????220?x?3 a2?+?b??(4d?array):?256?x?256?x?220?x?3我們看到在a2的第三個維度增加了一個1,擴充為4維,便可以正常廣播!
如何實現(xiàn)a1到a2轉(zhuǎn)化?
a2 = a1[:,:,np.newaxis,:]即可!
9.常用函數(shù)
9.1 np.bincount()
首先生成一個一維數(shù)組
x?=?np.array([1,?2,?3,?3,?0,?1,?4])統(tǒng)計索引出現(xiàn)次數(shù):索引0出現(xiàn)1次,1出現(xiàn)2次,2出現(xiàn)1次,3出現(xiàn)2次,4出現(xiàn)1次
因此通過bincount計算出索引出現(xiàn)次數(shù)如下:
np.bincount(x) #?[1?2?1?2?1]上面怎么得到的?
對于bincount計算嗎,bin的數(shù)量比x中最大數(shù)多1,例如x最大為4,那么bin數(shù)量為5(index從0到4),也就會bincount輸出的一維數(shù)組為5個數(shù),bincount中的數(shù)又代表什么?代表的是它的索引值在x中出現(xiàn)的次數(shù)!
還是以上述x為例子,當我們設(shè)置weights參數(shù)時候,結(jié)果又是什么?
這里假定:
w?=?np.array([0.3,0.5,0.7,0.6,0.1,-0.9,1])那么設(shè)置這個w權(quán)重后,結(jié)果為多少?
np.bincount(x,weights=w)輸出:
[?0.1?-0.6??0.5??1.3??1.?]怎么計算的?
先對x與w抽取出來:
x?--->??[1,?2,?3,?3,?0,?1,?4] w?--->??[0.3,0.5,0.7,0.6,0.1,-0.9,1]索引 0 出現(xiàn)在x中index=4位置,那么在w中訪問index=4的位置即可,w[4]=0.1
索引 1 出現(xiàn)在x中index=0與index=5位置,那么在w中訪問index=0與index=5的位置即可,然后將兩這個加和,計算得:w[0]+w[5]=-0.6
其余的按照上面的方法即可!
bincount的另外一個參數(shù)為minlength,這個參數(shù)簡單,可以這么理解,當所給的bin數(shù)量多于實際從x中得到的bin數(shù)量后,后面沒有訪問到的設(shè)置為0即可。
還是上述x為例:
這里我們直接設(shè)置minlength=7參數(shù),并輸出!
[1?2?1?2?1?0?0]與上面相比多了兩個0,這兩個怎么會多?
上面知道,這個bin數(shù)量為5,index從0到4,那么當minlength為7的時候,也就是總長為7,index從0到6,多了后面兩位,直接補位為0即可!
9.2 np.argmax()
函數(shù)原型為:numpy.argmax(a, axis=None, out=None).
函數(shù)表示返回沿軸axis最大值的索引。
x?=?[[1,3,3],[7,5,2]] print(np.argmax(x)) #?3對于這個例子我們知道,7最大,索引位置為3(這個索引按照遞增順序)!
axis屬性
axis=0表示按列操作,也就是對比當前列,找出最大值的索引!
x?=?[[1,3,3],[7,5,2]] print(np.argmax(x,axis=0)) #?[1?1?0]axis=1表示按行操作,也就是對比當前行,找出最大值的索引!
x?=?[[1,3,3],[7,5,2]] print(np.argmax(x,axis=0)) #?[1?0]那如果碰到重復(fù)最大元素?
返回第一個最大值索引即可!
例如:
x?=?np.array([1,?3,?2,?3,?0,?1,?0]) print(x.argmax()) #?19.3 上述合并實例
這里來融合上述兩個函數(shù),舉個例子:
最終結(jié)果為1,為什么?
首先通過np.bincount(x)得到的結(jié)果是:[1 2 1 2 1],再根據(jù)最后的遇到重復(fù)最大值項,則返回第一個最大值的index即可!2的index為1,所以返回1。
9.4 求取精度
取指定位置的精度
In
np.around([-0.6,1.2798,2.357,9.67,13],?decimals=0)Out
看到?jīng)],負數(shù)進位取絕對值大的!
array([-1.,??1.,??2.,?10.,?13.])In
np.around([1.2798,2.357,9.67,13],?decimals=1)Out
array([?1.3,??2.4,??9.7,?13.?])In
np.around([1.2798,2.357,9.67,13],?decimals=2)Out
array([?1.28,??2.36,??9.67,?13.??])從上面可以看出,decimals表示指定保留有效數(shù)的位數(shù),當超過5就會進位(此時包含5)!
但是,如果這個參數(shù)設(shè)置為負數(shù),又表示什么?
In
np.around([1,2,5,6,56],?decimals=-1)Out
array([?0,??0,??0,?10,?60])發(fā)現(xiàn)沒,當超過5時候(不包含5),才會進位!-1表示看一位數(shù)進位即可,那么如果改為-2呢,那就得看兩位!
例如:
In
np.around([1,2,5,50,56,190],?decimals=-2)Out
array([??0,???0,???0,???0,?100,?200])看到?jīng)],必須看兩位,超過50才會進位,190的話,就看后面兩位,后兩位90超過50,進位,那么為200!
計算沿指定軸第N維的離散差值
In
x?=?np.arange(1?,?16).reshape((3?,?5))Out
array([[?1,??2,??3,??4,??5],[?6,??7,??8,??9,?10],[11,?12,?13,?14,?15]])In
np.diff(x,axis=1)?#默認axis=1Out
array([[1,?1,?1,?1],[1,?1,?1,?1],[1,?1,?1,?1]])In
np.diff(x,axis=0)?Out
array([[5,?5,?5,?5,?5],[5,?5,?5,?5,?5]])取整
In
np.floor([-0.6,-1.4,-0.1,-1.8,0,1.4,1.7])Out
array([-1.,?-2.,?-1.,?-2.,??0.,??1.,??1.])看到?jīng)],負數(shù)取整,跟上述的around一樣,是向左!
取上限
np.ceil([1.2,1.5,1.8,2.1,2.0,-0.5,-0.6,-0.3])取上限!找這個小數(shù)的最大整數(shù)即可!
查找
利用np.where實現(xiàn)小于0的值用0填充嗎,大于0的數(shù)不變!
In
x?=?np.array([[1,?0],[2,?-2],[-2,?1]])Out
array([[?1,??0],[?2,?-2],[-2,??1]])In
np.where(x>0,x,0)Out
array([[1,?0],[2,?0],[0,?1]])作者光城的公眾號:
請關(guān)注和分享↓↓↓?
機器學習初學者
QQ群:774999266
往期精彩回顧
良心推薦:機器學習入門資料匯總及學習建議(2018版)
黃海廣博士的github鏡像下載(機器學習及深度學習資源)
吳恩達老師的機器學習和深度學習課程筆記打印版
機器學習小抄-(像背托福單詞一樣理解機器學習)
首發(fā):深度學習入門寶典-《python深度學習》原文代碼中文注釋版及電子書
科研工作者的神器-zotero論文管理工具
機器學習的數(shù)學基礎(chǔ)
機器學習必備寶典-《統(tǒng)計學習方法》的python代碼實現(xiàn)、電子書及課件
吐血推薦收藏的學位論文排版教程(完整版)
總結(jié)
以上是生活随笔為你收集整理的适合初学者快速入门的Numpy实战全集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python绘图工具基础-matplot
- 下一篇: python进阶之多进程