【Python】机器学习矩阵运算必学库Numpy首秀!
生活随笔
收集整理的這篇文章主要介紹了
【Python】机器学习矩阵运算必学库Numpy首秀!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
公眾號:尤而小屋
作者:Peter
編輯:Peter
大家好,我是Peter~
開始更新numpy相關的文章,本文介紹numpy中的25個小案例,主要內容是如何利用numpy來生成向量(一維數組),矩陣和高維數組等
numpy介紹
NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
NumPy 是一個運行速度非常快的數學庫,主要用于數組計算,包含:
一個強大的N維數組對象 ndarray
廣播功能函數
整合 C/C++/Fortran 代碼的工具
線性代數、傅里葉變換、隨機數生成等功能
導入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>查看函數幫助文檔
#?np.info(np.abs)創建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]))創建全1向量、數組
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.]]])創建單位矩陣-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]])自定義數據類型
np.ones([2,3])??#?默認是浮點數array([[1., 1., 1.],[1., 1., 1.]])np.ones([2,3],dtype=int)??#?指定為int類型array([[1, 1, 1],[1, 1, 1]])列表轉數組
lst?=?[1,2,3,4]np.array(lst)array([1, 2, 3, 4])#?指定數組類型lst?=?[1,2,3,4] np.array(lst,?dtype=float)array([1., 2., 3., 4.])嵌套列表轉數組
lst1?=?[[1,2,3],[4,5,6]]np.array(lst1)array([[1, 2, 3],[4, 5, 6]])#?指定數據類型lst1?=?[[1,2,3],[4,5,6]]np.array(lst1,?dtype=float)array([[1., 2., 3.],[4., 5., 6.]])元組轉數組
t1?=?(9,8,7) np.array(t1)array([9, 8, 7])嵌套元組轉數組
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]])迭代器轉數組
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的矩陣,對角線下方的值為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函數
numpy 包中的使用 arange 函數創建數值范圍并返回 ndarray 對象,函數使用方法為:
numpy.arange(start,?stop,?step,?dtype)start:起始值,默認為0
stop:終止值,不包含
step:步長,默認為1
dtype:返回數組的數據類型
創建隨機數組
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數據轉數組
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]])反轉數組
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函數
主要是用來改變數組的形狀
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會自動生成相應的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函數
用于構建一個等差數列的數組,使用方法為:
np.linspace(start,??#?起始值stop,??#?終止值,如果endpoint為true,該值包含于數列中num=50,??#?生成的樣本量,默認為50endpoint=True,??#是否包含末尾的值;默認為Trueretstep=False,??#??為True時,生成的數組中會顯示間距,反之不dtype=None??#?數據類型 )np.linspace(1,10,5)array([ 1. , 3.25, 5.5 , 7.75, 10. ])可以不包含末尾的數值:
np.linspace(1,10,5,endpoint=False)array([1. , 2.8, 4.6, 6.4, 8.2])全部是1的等差數列:
#?全部是1的等差數列 np.linspace(1,1,10)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])加上restep參數,則會顯示步長:
np.linspace(1,10,5,retstep=True)(array([ 1. , 3.25, 5.5 , 7.75, 10. ]), 2.25)np.logspace函數
主要是用于生成等比數列,使用方法為:
np.logspace(start,?#?base?**?start(指數)stop,?# base ** stop;如果endpoint為true,該值包含于數列中num=50,?endpoint=True,?base=10.0,??#?默認底數為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])指定不同的底數;第一個數為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. ])往期精彩回顧適合初學者入門人工智能的路線及資料下載中國大學慕課《機器學習》(黃海廣主講)機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載本站qq群955171419,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【Python】机器学习矩阵运算必学库Numpy首秀!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springMVC问题XXX is no
- 下一篇: 【Python】推荐10个好用到爆的Ju