python科学计算三剑客_机器学习三剑客之Numpy
NumpyNumPy是Python語言的一個擴(kuò)充程序庫。支持高級大量的維度數(shù)組與矩陣運(yùn)算,此外也針對數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫。Numpy內(nèi)部解除了Python的PIL(全局解釋器鎖),運(yùn)算效率極好,是大量機(jī)器學(xué)習(xí)框架的基礎(chǔ)庫!
Numpy簡單創(chuàng)建數(shù)組import?numpy?as?np#?創(chuàng)建簡單的列表a?=?[1,?2,?3,?4]#?將列表轉(zhuǎn)換為數(shù)組b?=?np.array(b)
Numpy查看數(shù)組屬性
數(shù)組元素個數(shù)b.size
數(shù)組形狀b.shape
數(shù)組維度b.ndim
數(shù)組元素類型b.dtype
快速創(chuàng)建N維數(shù)組的api函數(shù)創(chuàng)建10行10列的數(shù)值為浮點(diǎn)1的矩陣array_one?=?np.ones([10,?10])創(chuàng)建10行10列的數(shù)值為浮點(diǎn)0的矩陣array_zero?=?np.zeros([10,?10])從現(xiàn)有的數(shù)據(jù)創(chuàng)建數(shù)組array(深拷貝)
asarray(淺拷貝)
Numpy創(chuàng)建隨機(jī)數(shù)組np.random均勻分布np.random.rand(10, 10)創(chuàng)建指定形狀(示例為10行10列)的數(shù)組(范圍在0至1之間)
np.random.uniform(0, 100)創(chuàng)建指定范圍內(nèi)的一個數(shù)
np.random.randint(0, 100) 創(chuàng)建指定范圍內(nèi)的一個整數(shù)
正態(tài)分布
給定均值/標(biāo)準(zhǔn)差/維度的正態(tài)分布np.random.normal(1.75, 0.1, (2, 3))數(shù)組的索引, 切片#?正態(tài)生成4行5列的二維數(shù)組arr?=?np.random.normal(1.75,?0.1,?(4,?5))
print(arr)#?截取第1至2行的第2至3列(從第0行算起)after_arr?=?arr[1:3,?2:4]
print(after_arr)
數(shù)組索引改變數(shù)組形狀(要求前后元素個數(shù)匹配)
改變數(shù)組形狀print("reshape函數(shù)的使用!")
one_20?=?np.ones([20])
print("-->1行20列
one_4_5?=?one_20.reshape([4,?5])
print("-->4行5列
Numpy計算(重要)
條件運(yùn)算
原始數(shù)據(jù)
條件判斷import?numpy?as?np
stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])
stus_score?>?80
三目運(yùn)算import?numpy?as?np
stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])
np.where(stus_score?
統(tǒng)計運(yùn)算指定軸最大值amax(參數(shù)1: 數(shù)組; 參數(shù)2: axis=0/1; 0表示列1表示行)
求最大值stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])#?求每一列的最大值(0表示列)print("每一列的最大值為:")
result?=?np.amax(stus_score,?axis=0)
print(result)
print("每一行的最大值為:")
result?=?np.amax(stus_score,?axis=1)
print(result)指定軸最小值amin
求最小值stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])#?求每一行的最小值(0表示列)print("每一列的最小值為:")
result?=?np.amin(stus_score,?axis=0)
print(result)#?求每一行的最小值(1表示行)print("每一行的最小值為:")
result?=?np.amin(stus_score,?axis=1)
print(result)指定軸平均值mean
求平均值stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])#?求每一行的平均值(0表示列)print("每一列的平均值:")
result?=?np.mean(stus_score,?axis=0)
print(result)#?求每一行的平均值(1表示行)print("每一行的平均值:")
result?=?np.mean(stus_score,?axis=1)
print(result)方差std
求方差stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])#?求每一行的方差(0表示列)print("每一列的方差:")
result?=?np.std(stus_score,?axis=0)
print(result)#?求每一行的方差(1表示行)print("每一行的方差:")
result?=?np.std(stus_score,?axis=1)
print(result)
數(shù)組運(yùn)算數(shù)組與數(shù)的運(yùn)算
加法stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])
print("加分前:")
print(stus_score)#?為所有平時成績都加5分stus_score[:,?0]?=?stus_score[:,?0]+5print("加分后:")
print(stus_score)
乘法stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])
print("減半前:")
print(stus_score)#?平時成績減半stus_score[:,?0]?=?stus_score[:,?0]*0.5print("減半后:")
print(stus_score)數(shù)組間也支持加減乘除運(yùn)算,但基本用不到
image.pnga?=?np.array([1,?2,?3,?4])
b?=?np.array([10,?20,?30,?40])
c?=?a?+?b
d?=?a?-?b
e?=?a?*?b
f?=?a?/?b
print("a+b為",?c)
print("a-b為",?d)
print("a*b為",?e)
print("a/b為",?f)
矩陣運(yùn)算np.dot()(非常重要)
根據(jù)權(quán)重計算成績計算規(guī)則(M行, N列) * (N行, Z列) = (M行, Z列)
矩陣計算總成績stus_score?=?np.array([[80,?88],?[82,?81],?[84,?75],?[86,?83],?[75,?81]])#?平時成績占40%?期末成績占60%,?計算結(jié)果q?=?np.array([[0.4],?[0.6]])
result?=?np.dot(stus_score,?q)
print("最終結(jié)果為:")
print(result)矩陣拼接矩陣垂直拼接
垂直拼接print("v1為:")
v1?=?[[0,?1,?2,?3,?4,?5],
[6,?7,?8,?9,?10,?11]]
print(v1)
print("v2為:")
v2?=?[[12,?13,?14,?15,?16,?17],
[18,?19,?20,?21,?22,?23]]
print(v2)#?垂直拼接result?=?np.vstack((v1,?v2))
print("v1和v2垂直拼接的結(jié)果為")
print(result)矩陣水平拼接
水平拼接print("v1為:")
v1?=?[[0,?1,?2,?3,?4,?5],
[6,?7,?8,?9,?10,?11]]
print(v1)
print("v2為:")
v2?=?[[12,?13,?14,?15,?16,?17],
[18,?19,?20,?21,?22,?23]]
print(v2)#?垂直拼接result?=?np.hstack((v1,?v2))
print("v1和v2水平拼接的結(jié)果為")
print(result)
Numpy讀取數(shù)據(jù)np.genfromtxt
csv文件以逗號分隔數(shù)據(jù)
讀取csv格式的文件如果數(shù)值據(jù)有無法識別的值出現(xiàn),會以nan顯示,nan相當(dāng)于np.nan,為float類型.
總結(jié)
以上是生活随笔為你收集整理的python科学计算三剑客_机器学习三剑客之Numpy的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python处理文件名_[请教]pyth
- 下一篇: ubuntun系统mysql数据库同步_