【Python】机器学习矩阵运算必学库Numpy首秀!
公眾號(hào):尤而小屋
作者:Peter
編輯:Peter
大家好,我是Peter~
開始更新numpy相關(guān)的文章,本文介紹numpy中的25個(gè)小案例,主要內(nèi)容是如何利用numpy來(lái)生成向量(一維數(shù)組),矩陣和高維數(shù)組等
numpy介紹
NumPy(Numerical Python) 是 Python 語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。
NumPy 是一個(gè)運(yùn)行速度非常快的數(shù)學(xué)庫(kù),主要用于數(shù)組計(jì)算,包含:
一個(gè)強(qiáng)大的N維數(shù)組對(duì)象 ndarray
廣播功能函數(shù)
整合 C/C++/Fortran 代碼的工具
線性代數(shù)、傅里葉變換、隨機(jī)數(shù)生成等功能
導(dǎo)入numpy
import?numpy?as?np打印numpy的版本和配置信息
print(np.version)<module 'numpy.version' from '/Applications/downloads/anaconda/anaconda3/lib/python3.7/site-packages/numpy/version.py'>print(np.show_config)<function show at 0x1060cc560>查看函數(shù)幫助文檔
#?np.info(np.abs)創(chuàng)建0向量
np.zeros(10)array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])np.zeros((5,2))array([[0., 0.],[0., 0.],[0., 0.],[0., 0.],[0., 0.]])np.zeros((2,2,3))array([[[0., 0., 0.],[0., 0., 0.]],[[0., 0., 0.],[0., 0., 0.]]])改變0向量指定位置的值
z?=?np.zeros((3,4)) zarray([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])z[2,3]?=?1 z[1,1]?=?2zarray([[0., 0., 0., 0.],[0., 2., 0., 0.],[0., 0., 0., 1.]])找到非0的值
np.nonzero(z)(array([1, 2]), array([1, 3]))創(chuàng)建全1向量、數(shù)組
np.ones(6)array([1., 1., 1., 1., 1., 1.])np.ones((3,2))array([[1., 1.],[1., 1.],[1., 1.]])np.ones([2,3,2])array([[[1., 1.],[1., 1.],[1., 1.]],[[1., 1.],[1., 1.],[1., 1.]]])創(chuàng)建單位矩陣-eye
np.eye(4)array([[1., 0., 0., 0.],[0., 1., 0., 0.],[0., 0., 1., 0.],[0., 0., 0., 1.]])np.eye(4,dtype=int)array([[1, 0, 0, 0],[0, 1, 0, 0],[0, 0, 1, 0],[0, 0, 0, 1]])自定義數(shù)據(jù)類型
np.ones([2,3])??#?默認(rèn)是浮點(diǎn)數(shù)array([[1., 1., 1.],[1., 1., 1.]])np.ones([2,3],dtype=int)??#?指定為int類型array([[1, 1, 1],[1, 1, 1]])列表轉(zhuǎn)數(shù)組
lst?=?[1,2,3,4]np.array(lst)array([1, 2, 3, 4])#?指定數(shù)組類型lst?=?[1,2,3,4] np.array(lst,?dtype=float)array([1., 2., 3., 4.])嵌套列表轉(zhuǎn)數(shù)組
lst1?=?[[1,2,3],[4,5,6]]np.array(lst1)array([[1, 2, 3],[4, 5, 6]])#?指定數(shù)據(jù)類型lst1?=?[[1,2,3],[4,5,6]]np.array(lst1,?dtype=float)array([[1., 2., 3.],[4., 5., 6.]])元組轉(zhuǎn)數(shù)組
t1?=?(9,8,7) np.array(t1)array([9, 8, 7])嵌套元組轉(zhuǎn)數(shù)組
t2?=?((9,8,7),(6,5,4)) np.array(t2)array([[9, 8, 7],[6, 5, 4]])列表和元組混合
lt?=?[(1,2,3),(7,8,9)]np.array(lt)array([[1, 2, 3],[7, 8, 9]])迭代器轉(zhuǎn)數(shù)組
range_number?=?range(3,8)np.array(range_number)array([3, 4, 5, 6, 7])#?指定類型range_number?=?range(3,?8) np.array(range_number,?dtype=float)array([3., 4., 5., 6., 7.])特殊矩陣1
邊界值為1,其他為0
b?=?np.ones([6,6]) barray([[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.]])b[1:-1,1:-1]?=?0barray([[1., 1., 1., 1., 1., 1.],[1., 0., 0., 0., 0., 1.],[1., 0., 0., 0., 0., 1.],[1., 0., 0., 0., 0., 1.],[1., 0., 0., 0., 0., 1.],[1., 1., 1., 1., 1., 1.]])特殊矩陣2
用0填充矩陣的邊界
c?=?np.ones((6,6)) carray([[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.],[1., 1., 1., 1., 1., 1.]])np.pad(c,pad_width=1,mode="constant",constant_values=0)array([[0., 0., 0., 0., 0., 0., 0., 0.],[0., 1., 1., 1., 1., 1., 1., 0.],[0., 1., 1., 1., 1., 1., 1., 0.],[0., 1., 1., 1., 1., 1., 1., 0.],[0., 1., 1., 1., 1., 1., 1., 0.],[0., 1., 1., 1., 1., 1., 1., 0.],[0., 1., 1., 1., 1., 1., 1., 0.],[0., 0., 0., 0., 0., 0., 0., 0.]])特殊矩陣3
6*6的矩陣,對(duì)角線下方的值為1,2,3,4,5
np.diag(1?+?np.arange(5),?k=-1)array([[0, 0, 0, 0, 0, 0],[1, 0, 0, 0, 0, 0],[0, 2, 0, 0, 0, 0],[0, 0, 3, 0, 0, 0],[0, 0, 0, 4, 0, 0],[0, 0, 0, 0, 5, 0]])np.arange函數(shù)
numpy 包中的使用 arange 函數(shù)創(chuàng)建數(shù)值范圍并返回 ndarray 對(duì)象,函數(shù)使用方法為:
numpy.arange(start,?stop,?step,?dtype)start:起始值,默認(rèn)為0
stop:終止值,不包含
step:步長(zhǎng),默認(rèn)為1
dtype:返回?cái)?shù)組的數(shù)據(jù)類型
創(chuàng)建隨機(jī)數(shù)組
np.random.random((2,3,2))array([[[0.56045087, 0.15566786],[0.34963774, 0.51837142],[0.68895046, 0.04980068]],[[0.98352437, 0.47189043],[0.30430488, 0.49057744],[0.20020709, 0.90466043]]])Pandas數(shù)據(jù)轉(zhuǎn)數(shù)組
import?pandas?as?pd s?=?pd.Series([1,2,3,4])np.array(s)array([1, 2, 3, 4])d?=?pd.DataFrame([[1,2,3,4],[9,8,7,6]])np.array(d)array([[1, 2, 3, 4],[9, 8, 7, 6]])反轉(zhuǎn)數(shù)組
ten?=?np.arange(10) tenarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])ten[::-1]array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])reshape函數(shù)
主要是用來(lái)改變數(shù)組的形狀
arr?=?np.arange(16) arrarray([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])arr.shape(16,)arr.reshape((4,4))array([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11],[12, 13, 14, 15]])arr.reshape((2,8))array([[ 0, 1, 2, 3, 4, 5, 6, 7],[ 8, 9, 10, 11, 12, 13, 14, 15]])arr.reshape((8,2))array([[ 0, 1],[ 2, 3],[ 4, 5],[ 6, 7],[ 8, 9],[10, 11],[12, 13],[14, 15]])arr.reshape((1,16))array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]])我們需要特別注意-1的使用,numpy會(huì)自動(dòng)生成相應(yīng)的shape值
arr.reshape((8,-1))array([[ 0, 1],[ 2, 3],[ 4, 5],[ 6, 7],[ 8, 9],[10, 11],[12, 13],[14, 15]])arr.reshape((-1,8))array([[ 0, 1, 2, 3, 4, 5, 6, 7],[ 8, 9, 10, 11, 12, 13, 14, 15]])np.linspace函數(shù)
用于構(gòu)建一個(gè)等差數(shù)列的數(shù)組,使用方法為:
np.linspace(start,??#?起始值stop,??#?終止值,如果endpoint為true,該值包含于數(shù)列中num=50,??#?生成的樣本量,默認(rèn)為50endpoint=True,??#是否包含末尾的值;默認(rèn)為Trueretstep=False,??#??為True時(shí),生成的數(shù)組中會(huì)顯示間距,反之不dtype=None??#?數(shù)據(jù)類型 )np.linspace(1,10,5)array([ 1. , 3.25, 5.5 , 7.75, 10. ])可以不包含末尾的數(shù)值:
np.linspace(1,10,5,endpoint=False)array([1. , 2.8, 4.6, 6.4, 8.2])全部是1的等差數(shù)列:
#?全部是1的等差數(shù)列 np.linspace(1,1,10)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])加上restep參數(shù),則會(huì)顯示步長(zhǎng):
np.linspace(1,10,5,retstep=True)(array([ 1. , 3.25, 5.5 , 7.75, 10. ]), 2.25)np.logspace函數(shù)
主要是用于生成等比數(shù)列,使用方法為:
np.logspace(start,?#?base?**?start(指數(shù))stop,?# base ** stop;如果endpoint為true,該值包含于數(shù)列中num=50,?endpoint=True,?base=10.0,??#?默認(rèn)底數(shù)為10dtype=None )np.logspace(1,5,num=10)array([1.00000000e+01, 2.78255940e+01, 7.74263683e+01, 2.15443469e+02,5.99484250e+02, 1.66810054e+03, 4.64158883e+03, 1.29154967e+04,3.59381366e+04, 1.00000000e+05])指定不同的底數(shù);第一個(gè)數(shù)為2的0次方,為1:
np.logspace(0,8,num=10,base=2)array([ 1. , 1.85174942, 3.42897593, 6.34960421,11.75787594, 21.77264 , 40.3174736 , 74.65785853,138.24764658, 256. ])往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載中國(guó)大學(xué)慕課《機(jī)器學(xué)習(xí)》(黃海廣主講)機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載本站qq群955171419,加入微信群請(qǐng)掃碼:總結(jié)
以上是生活随笔為你收集整理的【Python】机器学习矩阵运算必学库Numpy首秀!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springMVC问题XXX is no
- 下一篇: 【Python】推荐10个好用到爆的Ju