Numpy入門,看這一篇就夠了!
大家好,我是J哥。??
本文系統(tǒng)講解Numpy基礎(chǔ)知識(shí),對于初學(xué)數(shù)據(jù)處理和分析幫助很多,希望你能收藏此文,好好學(xué)習(xí),以下是本文框架結(jié)構(gòu):

本文目錄
基本類型

類型轉(zhuǎn)換
j?=?np.arange(3)??
print(j)
print('查看數(shù)據(jù)類型:\n',j.dtype)
print('-'*20)
g?=?j.astype('float')?#轉(zhuǎn)換為float類型
print('查看轉(zhuǎn)換后類型:\n',g.dtype)
[0?1?2]
查看數(shù)據(jù)類型:
?int64
--------------------
查看轉(zhuǎn)換后類型:
?float64
創(chuàng)建數(shù)組
#方法一、將列表或元組傳入np.array()來創(chuàng)建
print(np.array([1,2,3]))?
#方法二、初始化數(shù)組的值,只需傳入元素個(gè)數(shù)即可
print(np.ones(3))
print(np.zeros(3))
print(np.random.random(3))
[1?2?3]
[1.?1.?1.]
[0.?0.?0.]
[0.71318806?0.95903425?0.75384478]
數(shù)組運(yùn)算
#首先創(chuàng)建兩個(gè)數(shù)組
data1?=?np.array([1,2])
data2?=?np.ones(2)
print(data1,data2)[1?2]?[1.?1.]
#數(shù)組間加減乘除
jia?=?data1+data2
jian?=?data1-data2
cheng?=?data1*data2
chu?=?data1/data2
#數(shù)組與單個(gè)數(shù)值的操作
shuzhi1?=?data1*100
shuzhi2?=?data1/100
print(jia,jian,cheng,chu,shuzhi1,shuzhi2)
[2.?3.]?[0.?1.]?[1.?2.]?[1.?2.]?[100?200]?[0.01?0.02]
數(shù)組切片
#類似列表操作進(jìn)行索引和切片
data3?=?np.array([1,2,3,4,5])
print(data3)
print(data3[0])
print(data3[2:4])
print(data3[2:])
print(data3[:4])
[1?2?3?4?5]
1
[3?4]
[3?4?5]
[1?2?3?4]
聚合函數(shù)
data4?=?np.array([1,2,3,4,5])
print(data4.max())?#最大值
print(data4.min())?#最小值
print(data4.mean())?#均值
print(data4.sum())?#求和
print(data4.std())?#標(biāo)準(zhǔn)差
5
1
3.0
15
1.4142135623730951
創(chuàng)建矩陣
#方法一、通過將二維列表傳給Numpy來創(chuàng)建矩陣
print(np.array([[1,2],[3,4]]))
#方法二、傳入一個(gè)元組來描述矩陣的維度
print(np.ones((3,2)))?#3行2列矩陣
print(np.zeros((3,2)))?
print(np.random.random((3,2)))?
[[1?2]
?[3?4]]
[[1.?1.]
?[1.?1.]
?[1.?1.]]
[[0.?0.]
?[0.?0.]
?[0.?0.]]
[[0.2928769??0.24093443]
?[0.06189287?0.62359846]
?[0.80539105?0.81706549]]
矩陣運(yùn)算
#相同大小矩陣的加減乘除
data5?=?np.array([[1,2],[3,4]])
data6?=?np.ones((2,2))
jia1?=?data5?+?data6
cheng1?=?data5?*?data6
print(jia1,'\n',cheng1)
[[2.?3.]
?[4.?5.]]?
?[[1.?2.]
?[3.?4.]]
#不同大小矩陣的加減乘除(僅兩個(gè)矩陣秩數(shù)為1時(shí))
data7?=?np.array([[1,2],[3,4],[5,6]])
data8_1?=?np.ones((1,2))?#行秩為1
data8_2?=?np.ones((3,1))?#列秩為1
print(data7?+?data8_1)
print('-'*20)
print(data7?+?data8_2)
[[2.?3.]
?[4.?5.]
?[6.?7.]]
--------------------
[[2.?3.]
?[4.?5.]
?[6.?7.]]
#矩陣乘法,dot()方法
data9?=?np.array([[1,2,3]])?#1*3的矩陣
data10?=?np.array([[1,2],[3,4],[5,6]])?#3*2的矩陣
data11?=?data9.dot(data10)?#1*2的矩陣
print(data11)
[[22?28]]
矩陣切片和聚合
#可以在不同維度上使用索引操作來對數(shù)據(jù)進(jìn)行切片
data12?=?np.array([[1,2],[3,4],[5,6]])
print(data12)
print(data12[0,1])?#1行2列數(shù)據(jù)
print(data12[1:3])?#2-3行
print(data12[0:2,0])?#1-2行,1列
[[1?2]
?[3?4]
?[5?6]]
2
[[3?4]
?[5?6]]
[1?3]
#可以像聚合向量一樣聚合矩陣
print(data12.max())
print(data12.min())
print(data12.sum())
print(data12.mean())
print(data12.std())
#還可以使用axis參數(shù)指定行和列的聚合
print(data12.max(axis?=?0))?#縱向執(zhí)行
print(data12.max(axis?=?1))?#橫向執(zhí)行
6
1
21
3.5
1.707825127659933
[5?6]
[2?4?6]
矩陣轉(zhuǎn)置和重構(gòu)
#NumPy數(shù)組的屬性T可用于獲取矩陣的轉(zhuǎn)置
print('轉(zhuǎn)置前:\n',data12)
print('轉(zhuǎn)置后:\n',data12.T)
轉(zhuǎn)置前:
?[[1?2]
?[3?4]
?[5?6]]
轉(zhuǎn)置后:
?[[1?3?5]
?[2?4?6]]
In:
#在較為復(fù)雜的用例中,可能需要使用NumPy的reshape()方法改變某個(gè)矩陣的維度
data13?=?np.array([1,2,3,4,5,6])
print('重構(gòu)前:\n',data13)
print('重構(gòu)后:\n',data13.reshape(2,3))
print('重構(gòu)后:\n',data13.reshape(3,2))
Out:
重構(gòu)前:
?[1?2?3?4?5?6]
重構(gòu)后:
?[[1?2?3]
?[4?5?6]]
重構(gòu)后:
?[[1?2]
?[3?4]
?[5?6]]
In:
#上文中的所有功能都適用于多維數(shù)據(jù),其中心數(shù)據(jù)結(jié)構(gòu)稱為ndarray(N維數(shù)組)
data14?=?np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
print(data14)
print('-'*20)
#改變維度只需在NumPy函數(shù)的參數(shù)中添加一個(gè)逗號(hào)和維度
print(np.ones((4,3,2)))
print('-'*20)
print(np.zeros((4,3,2)))
print('-'*20)
print(np.random.random((4,3,2)))
Out:
[[[1?2]
??[3?4]]
?[[5?6]
??[7?8]]]
--------------------
[[[1.?1.]
??[1.?1.]
??[1.?1.]]
?[[1.?1.]
??[1.?1.]
??[1.?1.]]
?[[1.?1.]
??[1.?1.]
??[1.?1.]]
?[[1.?1.]
??[1.?1.]
??[1.?1.]]]
--------------------
[[[0.?0.]
??[0.?0.]
??[0.?0.]]
?[[0.?0.]
??[0.?0.]
??[0.?0.]]
?[[0.?0.]
??[0.?0.]
??[0.?0.]]
?[[0.?0.]
??[0.?0.]
??[0.?0.]]]
--------------------
[[[0.37593802?0.42651876]
??[0.74639264?0.19783467]
??[0.787414???0.63820259]]
?[[0.84871262?0.46467497]
??[0.54633954?0.4376995?]
??[0.71988166?0.9306682?]]
?[[0.6384108??0.74196991]
??[0.73857164?0.38450555]
??[0.68579442?0.64018511]]
?[[0.60382775?0.35889667]
??[0.8625612??0.86523028]
??[0.83701853?0.08289658]]]

In:
#在NumPy中可以很容易地實(shí)現(xiàn)均方誤差。
np_1?=?np.ones(3)
np_2?=?np.array([1,2,3])
error?=?(1/3)?*?np.sum(np.square(np_1?-?np_2))
print(error)
Out:
1.6666666666666665
電子表格和數(shù)據(jù)表

音頻和時(shí)間序列

圖像

黑白圖像

彩色圖像
評論
圖片
表情
