日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】机器学习矩阵运算必学库Numpy首秀!

發(fā)布時間:2025/3/12 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】机器学习矩阵运算必学库Numpy首秀! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

公眾號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

開始更新numpy相關(guān)的文章,本文介紹numpy中的25個小案例,主要內(nèi)容是如何利用numpy來生成向量(一維數(shù)組),矩陣和高維數(shù)組等

numpy介紹

NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫。

NumPy 是一個運行速度非常快的數(shù)學(xué)庫,主要用于數(shù)組計算,包含:

  • 一個強大的N維數(shù)組對象 ndarray

  • 廣播功能函數(shù)

  • 整合 C/C++/Fortran 代碼的工具

  • 線性代數(shù)、傅里葉變換、隨機數(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])??#?默認是浮點數(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的矩陣,對角線下方的值為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 對象,函數(shù)使用方法為:

numpy.arange(start,?stop,?step,?dtype)
  • start:起始值,默認為0

  • stop:終止值,不包含

  • step:步長,默認為1

  • dtype:返回數(shù)組的數(shù)據(jù)類型

np.arange(10)array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])#?指定步長 np.arange(0,10,2)array([0, 2, 4, 6, 8])#?指定類型 np.arange(0,10,2,dtype=float)array([0., 2., 4., 6., 8.])

創(chuàng)建隨機數(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ù)

主要是用來改變數(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會自動生成相應(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)建一個等差數(shù)列的數(shù)組,使用方法為:

np.linspace(start,??#?起始值stop,??#?終止值,如果endpoint為true,該值包含于數(shù)列中num=50,??#?生成的樣本量,默認為50endpoint=True,??#是否包含末尾的值;默認為Trueretstep=False,??#??為True時,生成的數(shù)組中會顯示間距,反之不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ù),則會顯示步長:

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,??#?默認底數(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ù);第一個數(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é)者入門人工智能的路線及資料下載中國大學(xué)慕課《機器學(xué)習(xí)》(黃海廣主講)機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載本站qq群955171419,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【Python】机器学习矩阵运算必学库Numpy首秀!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。