国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Numpy常用函數(shù)匯總

這篇具有很好參考價值的文章主要介紹了Numpy常用函數(shù)匯總。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文使用的是Jupyter notebook,因此僅在開頭引入了Numpy,后續(xù)沒有引入,如果在其他編譯器中運行的話請確保引入了numpy

1 創(chuàng)建數(shù)組

import numpy as np

1.1 使用array()導(dǎo)入向量

vector = np.array([1, 2, 3, 4])
vector
array([1, 2, 3, 4])

1.2 numpy.array()也可以用來導(dǎo)入矩陣

matrix = np.array([[1, 'Tim'], [2, 'Joey'], [3, 'Johnny']])
print(matrix)
[['1' 'Tim']
 ['2' 'Joey']
 ['3' 'Johnny']]

2 創(chuàng)建Numpy數(shù)組

2.1 創(chuàng)建全0矩陣

默認情況下創(chuàng)建的類型為float64類型

zeros = np.zeros(10)
print(zeros)
print(type(zeros))
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
<class 'numpy.ndarray'>

如果希望在創(chuàng)建Numpy矩陣時候強制規(guī)定一種類型,那么我們可以使用以下代碼

int_zeros = np.zeros(10, dtype=int)
print(int_zeros)
print(type(int_zeros))
[0 0 0 0 0 0 0 0 0 0]
<class 'numpy.ndarray'>

2.2 創(chuàng)建多維矩陣

創(chuàng)建的是三行四列的矩陣并且其數(shù)據(jù)類型是float64

np.zeros(shape=(3, 4))
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

2.3 創(chuàng)建全1矩陣

np.ones(shape=(3, 4))  # 這里可以省略shape=,即可以直接寫成這樣:np.ones((3,4))
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

2.4 創(chuàng)建一個用指定值填滿的矩陣

創(chuàng)建一個三行五列的矩陣,默認值為121

np.full((3, 5), 121)
array([[121, 121, 121, 121, 121],
       [121, 121, 121, 121, 121],
       [121, 121, 121, 121, 121]])

2.5 生成一個在指定范圍的矩陣

arange接受三個參數(shù),與python中的range方法相似,arange也是前閉后開的方法,第一個參數(shù)為向量的第一個值,第二個參數(shù)為向量的最后一個值(由于是前閉后開的,因此向量的最后一個值實際上是該值減去步長),第三個參數(shù)為步長,默認為1,

np.arange(0, 20, 2)
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

2.6 將指定范圍的值均分生成向量

使用np.linespace方法可以將Numpy矩陣進行等分,該方法的范圍是前閉后閉的

np.linspace(0, 10, 5)
array([ 0. ,  2.5,  5. ,  7.5, 10. ])

2.7 生成隨機數(shù)矩陣

  1. 生成一個長度為10的向量,里面每一個數(shù)值都是介于 0-10 之間的正數(shù),注意這里的范圍是前閉后開的
np.random.randint(0, 10, 10)
array([8, 8, 1, 8, 2, 4, 7, 3, 9, 2])
  1. 如果不確定每個參數(shù)代表的意思,可以加上參數(shù)名size
np.random.randint(0, 5, size=5)
array([1, 2, 2, 0, 4])
  1. 也可以生成一個三行五列的正數(shù)矩陣
np.random.randint(4, 9, size=(3, 5))
array([[5, 7, 7, 4, 4],
       [4, 6, 7, 8, 4],
       [5, 7, 6, 7, 7]])
  1. 也可以生成介于0-1之間的浮點數(shù)的向量或者矩陣,不用指定范圍
np.random.random(10)
array([0.06534131, 0.37071446, 0.02235879, 0.52019336, 0.21088465,
       0.27516892, 0.07299309, 0.90930363, 0.38513079, 0.45422644])
np.random.random((2, 4))
array([[0.58483127, 0.38876978, 0.39987466, 0.75698103],
       [0.91688914, 0.49879013, 0.28552401, 0.61492315]])
  1. np.random.normal()表示的是一個正太分布,normal在這里是正態(tài)的意思。numpy.random.normal(loc = 0, scale = 1, size = shape)的意義如下:
    • 參數(shù)loc(float):正態(tài)分布的均值,對應(yīng)這個分布的中心。loc=0說明這是一個以Y軸為對稱軸的正態(tài)分布
    • 參數(shù)scale(float):正態(tài)分布的標準差,對應(yīng)分布的寬度,scale越大,正態(tài)分布的曲線越矮胖,scale越小,曲線越高廋
    • 參數(shù)size(int 或者整數(shù)元組):輸出的值賦在shape里,默認為None
np.random.normal(loc=0, scale=1, size=5)
array([ 0.28137909,  0.44488236, -0.29643414,  1.06214656, -0.33401709])

3 獲取Numpy屬性

通過shape查看Numpy數(shù)組的屬性
通過.ndim來獲取Numpy數(shù)組的維度

a = np.arange(15)
print(a.shape)
print(a.ndim)

a = a.reshape(3, 5)
print(a.shape)
print(a.ndim)
(15,)
1
(3, 5)
2

reshape方法的特別用法
如果只關(guān)心需要多少行或者需要多少列,其他由計算機自己計算,那么這個時候我們可以使用如下方法

a.reshape(15, -1)
array([[ 0],
       [ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10],
       [11],
       [12],
       [13],
       [14]])
a.reshape(-1, 15)
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14]])

4 Numpy數(shù)組索引

Numpy支持類似list的定位操作,在Numpy中數(shù)組索引也是從0開始的

matrix = np.array([[1, 2, 3], [20, 30, 40]])
print(matrix)

print(matrix[0][1])
[[ 1  2  3]
 [20 30 40]]
2

5 切片

Numpy支持類似list的切片操作,對于下面的代碼

  • print(matrix[:,1])代表選中所有的行,并且列的索引是1的數(shù)據(jù)
  • print(matrix[:,0:2])代表選中所有的行,并且列的索引是0和1的數(shù)據(jù)
  • print(matrix[1:3,:])代表選中所有的列,并且行的索引是1和3的數(shù)據(jù)
  • print(matrix[1:3,0:2])代表選中行的索引是1和2,并且列的索引是0和1的所有數(shù)據(jù)
matrix = np.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
print(matrix[:, 1])
print(matrix[:, 0:2])
print(matrix[1:3, :])
print(matrix[1:3, 0:2])
[10 25 40]
[[ 5 10]
 [20 25]
 [35 40]]
[[20 25 30]
 [35 40 45]]
[[20 25]
 [35 40]]

6 Numpy中的矩陣運算

Numpy中矩陣運算(加、減、乘、除)必須嚴格按照公式進行計算,即兩個矩陣的基本運算必須具有相同的行數(shù)和列數(shù)。

6.1 矩陣的加法與減法

myones = np.ones((3, 3))
myeye = np.eye(3)
print(myones)
temp = myones + myeye
print('plus:')
print(temp)
temp = myones - myeye
print('minus:')
print(temp)
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
plus:
[[2. 1. 1.]
 [1. 2. 1.]
 [1. 1. 2.]]
minus:
[[0. 1. 1.]
 [1. 0. 1.]
 [1. 1. 0.]]

6.2 矩陣的點乘

矩陣真正的乘法必須滿足第一個矩陣的列數(shù)等于第二個矩陣的行數(shù),矩陣乘法的函數(shù)為dot

matrix_1 = np.array([
    [1, 2, 3],
    [4, 5, 6]
])
matrix_2 = np.array([
    [1, 2],
    [3, 4],
    [5, 6]
])
print(matrix_1.shape[0] == matrix_2.shape[1])
print(matrix_1.dot(matrix_2))
True
[[22 28]
 [49 64]]

6.3 矩陣的轉(zhuǎn)置

矩陣的轉(zhuǎn)置是指將矩陣中的行變?yōu)榱?/p>

a = np.array([
    [1, 2, 3],
    [4, 5, 6]
])
print(a.shape)
print(a.T.shape)
(2, 3)
(3, 2)

6.4 矩陣的逆

需要使用numpy.linalg.inv函數(shù)來求逆,矩陣求逆的條件是矩陣的行數(shù)和列數(shù)必須是相同的,并且該矩陣是滿秩的
同時,原矩陣與逆矩陣的點積為單位矩陣

A = np.array([
    [0, 1],
    [2, 3]
])
invA = np.linalg.inv(A)
print(A)
print(invA)
print(A.dot(invA))
[[0 1]
 [2 3]]
[[-1.5  0.5]
 [ 1.   0. ]]
[[1. 0.]
 [0. 1.]]

6.5 其他預(yù)置函數(shù)

除了上面說的那些函數(shù)之外,Numpy中還預(yù)置了很多函數(shù),使用這些函數(shù)可以作用于矩陣中的每個元素

矩陣函數(shù) 說明
np.sin(a) 對矩陣a中的每個元素取正弦,sin(x)
np.cos(a) 對矩陣a中的每個元素取余弦,cos(x)
np.tan(a) 對矩陣a中的每個元素取正切,tan(x)
np.sqrt(a) 對矩陣a中的每個元素開根號,sqrt(x)
np.abs(a) 對矩陣a中的每個元素取絕對值

7 數(shù)據(jù)類型轉(zhuǎn)換

Numpy ndarray數(shù)據(jù)類型可以通過參數(shù)dtype進行設(shè)定。而且還可以使用參數(shù)astype來轉(zhuǎn)換類型,在處理文件時該參數(shù)會很實用。
注意,astype調(diào)用會返回一個新的數(shù)組,也就是原始數(shù)據(jù)的備份
比如,下面是將String轉(zhuǎn)換為float的代碼

在這個例子中,如果字符串中包含非數(shù)字類型,那么從String轉(zhuǎn)換成float會報錯

vector = np.array(["1", "2", "3"])
print(vector)
vector = vector.astype(float)
print(vector)
['1' '2' '3']
[1. 2. 3.]

8 Numpy的統(tǒng)計計算方法

Numpy中內(nèi)置了很多計算方法,其中最重要的方法及說明具體如下

  • sum():計算矩陣元素的和;矩陣的計算結(jié)果為一個一維數(shù)組,需要指定行或者列
  • mean():計算矩陣元素的平均值;矩陣的計算結(jié)果為一個一維數(shù)組,需要指定行或者列
  • max():計算矩陣元素的最大值;矩陣的計算結(jié)果為一個一維數(shù)組,需要指定行或者列
  • median():計算矩陣元素的中位數(shù)

需要注意的是,用于這些統(tǒng)計方法的數(shù)據(jù)類型必須是int或者float

matrix = np.array([
    [5, 10, 15],
    [20, 10, 30],
    [35, 40, 45]
])
print(matrix.sum())  # 計算所有元素的和
print(matrix[0].sum())  # 計算第一行元素的和
print(matrix.sum(axis=1))  # 計算行的和,結(jié)果以列的形式展示
print(matrix.sum(axis=0))  # 計算列的和,結(jié)果以行的形式展示
210
30
[ 30  60 120]
[60 60 90]

9 Numpy中的arg運算

9.1 得到數(shù)組中最大值的下標

argmax函數(shù)就是用來求一個array中最大值的下標;簡單來說,就是最大的數(shù)所對應(yīng)的索引位置

maxIndex = np.argmax([1, 2, 4, 5, 2])
print('maxIndex = ', maxIndex)
maxIndex =  3

9.2 得到數(shù)組中最小值的下標

minIndex = np.argmin([1, 3, 2, 10, 5])
print('minIndex = ', minIndex)
minIndex =  0

9.3 打亂數(shù)組順序

x = np.arange(15, 30)
print(x)
np.random.shuffle(x)
print(x)
sortXIdx = np.argsort(x)  # 對X從小到大排序,并返回索引值,注意這里并未修改數(shù)組x的狀態(tài),僅僅是將其排序后應(yīng)該位于某一位的元素的下標給出,可以對照輸出理解一下
print(x)
print(sortXIdx)
[15 16 17 18 19 20 21 22 23 24 25 26 27 28 29]
[20 29 24 22 16 19 21 23 27 18 26 15 28 17 25]
[20 29 24 22 16 19 21 23 27 18 26 15 28 17 25]
[11  4 13  9  5  0  6  3  7  2 14 10  8 12  1]

排序后第一個元素9代表的是x素組中15的索引地址,即x[9]應(yīng)該是最小的元素

10 FancyIndexing

要索引向量中的一個值是比較容易的,可以通過x[n]來取值。
但是,如果想要更復(fù)雜地取數(shù),比如,需要返回第三個、第五個、第八個元素時,應(yīng)該怎么辦?示例代碼如下:

x = np.arange(15)
ind = [3, 5, 8]
print(x)
print(x[ind])
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
[3 5 8]

也可以從一維向量中構(gòu)建新的二維矩陣
下面代碼的第三行比較難理解,它的意思是構(gòu)造一個新的二維矩陣,第一行需要取x向量中索引為0的元素,以及索引為2的元素;第二行需要取x向量中索引為1的元素,以及索引為3的元素。
可以對照輸出來理解

x = np.arange(15)
np.random.shuffle(x)
ind = np.array([[0, 2], [1, 3]])
print(x)
print(x[ind])
[14  7  9 11 10  4  0  1 13  5  3  6  8  2 12]
[[14  9]
 [ 7 11]]

對于二維矩陣,我們使用fancyIndexing取數(shù)也是比較容易的,示例代碼如下:

x = np.arange(16)
np.random.shuffle(x)
x = x.reshape(4, -1)
print(x)

row = np.array([0, 1, 2])
col = np.array([1, 2, 3])
print(x[row, col])  # 相當于取三個點(0,1),(1,2),(2,3)
print(x[1:3, col])  # 相當于取兩行的對應(yīng)列,第二行及第三行的1,2,3列
[[ 3  4  8 13]
 [15  5 11 12]
 [ 7  2  1  0]
 [ 9 10 14  6]]
[ 4 11  0]
[[ 5 11 12]
 [ 2  1  0]]

11 Numpy數(shù)組比較

Numpy有一個強大的功能是數(shù)組或矩陣的比較,數(shù)據(jù)比較之后會產(chǎn)生boolean值,示例代碼如下,根據(jù)結(jié)果可以看出來對于矩陣中的每一個值,我們都將其與25進行了比較,并得出一個boolean值

matrix = np.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
m = (matrix == 25)
print(m)
[[False False False]
 [False  True False]
 [False False False]]

下面來看一個比較復(fù)雜的例子:
下面代碼中,print(second_column_25)的輸出是[False True False],首先matrix[:,1]代表的是所有的行中索引為1的列,即[10,25,40],將其與25比較,得到的就是前面的輸出。
print(matrix[second_column_25, :])代表的是返回true值的那一行數(shù)據(jù),即[20,25,30]

matrix = np.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
second_column_25 = (matrix[:, 1] == 25)
print(second_column_25)
print(matrix[second_column_25, :])
[False  True False]
[[20 25 30]]

如果需要多個條件的話,則可以使用條件符來拼接多個條件,其中&表示的是‘且’,|表示的是‘或’文章來源地址http://www.zghlxwxcb.cn/news/detail-419641.html

到了這里,關(guān)于Numpy常用函數(shù)匯總的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 無涯教程-機器學(xué)習(xí) - Jupyter Notebook函數(shù)

    Jupyter筆記本基本上為開發(fā)基于Python的數(shù)據(jù)科學(xué)應(yīng)用程序提供了一個交互式計算環(huán)境。它們以前稱為ipython筆記本。以下是Jupyter筆記本的一些功能,使其成為Python ML生態(tài)系統(tǒng)的最佳組件之一- Jupyter筆記本可以逐步排列代碼,圖像,文本,輸出等內(nèi)容,從而逐步說明分析過程。 它有助于

    2024年02月10日
    瀏覽(22)
  • Anaconda下Jupyter Notebook執(zhí)行OpenCV中cv2.imshow()報錯(錯誤碼為1272)網(wǎng)上解法匯總記錄和最終處理方式

    Anaconda下Jupyter Notebook執(zhí)行OpenCV中cv2.imshow()報錯(錯誤碼為1272)網(wǎng)上解法匯總記錄和最終處理方式

    Python 3.8.8 Anaconda3 2021.05 查詢匹配 python3.8.* 的OpenCV匹配版本為: 4.1.* — 4.2.* ,我最后安裝 4.2.0.32 版本 如下我記錄了 “從發(fā)現(xiàn)問題,到不斷試錯,最后解決問題” 的完整過程,以備自己復(fù)盤使用,大家不愿費時的可直接查看總結(jié)版的處理方式記錄 學(xué)校計算機視覺課要求完成

    2024年02月09日
    瀏覽(26)
  • 深入探索NumPy:科學(xué)計算利器的常用函數(shù)大全【第86篇—NumPy常用函數(shù)大全】

    深入探索NumPy:科學(xué)計算利器的常用函數(shù)大全【第86篇—NumPy常用函數(shù)大全】

    在數(shù)據(jù)科學(xué)和機器學(xué)習(xí)領(lǐng)域,NumPy(Numerical Python)模塊是Python中最常用的科學(xué)計算庫之一。它提供了豐富的功能,包括數(shù)組操作、數(shù)學(xué)函數(shù)、統(tǒng)計方法等,為數(shù)據(jù)處理和分析提供了強大的工具。本文將重點介紹NumPy模塊中常用的函數(shù),涵蓋字符串處理、數(shù)學(xué)運算、算術(shù)操作、

    2024年02月20日
    瀏覽(22)
  • 【記錄】終端如何 進入conda環(huán)境,如何退出 conda(base)環(huán)境,終端快速進入Jupyter notebook的方法 | 人工智能面試題:什么是聊天機器人(Chatbot)?列舉一些常用的

    【記錄】終端如何 進入conda環(huán)境,如何退出 conda(base)環(huán)境,終端快速進入Jupyter notebook的方法 | 人工智能面試題:什么是聊天機器人(Chatbot)?列舉一些常用的

    ? “一個人走向末路往往是因為不遺余力地尋找捷徑。” ? ? ??作者主頁: 追光者♂?? ???????? ??個人簡介: ? ??[1] 計算機專業(yè)碩士研究生?? ? ??[2] 2023年城市之星領(lǐng)跑者TOP1(哈爾濱)?? ? ??[3] 2022年度博客之星人工智能領(lǐng)域TOP4?? ? ??[4] 阿里云社區(qū)特邀專家博

    2024年02月07日
    瀏覽(32)
  • 【Python 零基礎(chǔ)入門】Numpy 常用函數(shù) 通用函數(shù) & 保存加載

    【Python 零基礎(chǔ)入門】Numpy 常用函數(shù) 通用函數(shù) & 保存加載

    Numpy (Numerical Python) 是 Python 編程語言的一個擴展程序庫, 支持大量的維度數(shù)組與矩陣運算, 并提供了大量的數(shù)學(xué)函數(shù)庫. Numpy 利用了多線程數(shù)組來存儲和處理大型數(shù)據(jù)集, 從而提供了一個高效的方式來進行數(shù)值計算, 特別是對于矩陣預(yù)算和線性代數(shù). 通用函數(shù) (Ufuncs) 是 numpy 的核

    2024年02月05日
    瀏覽(19)
  • NumPy 秘籍中文第二版:三、掌握常用函數(shù)

    NumPy 秘籍中文第二版:三、掌握常用函數(shù)

    原文:NumPy Cookbook - Second Edition 協(xié)議:CC BY-NC-SA 4.0 譯者:飛龍 在本章中,我們將介紹許多常用函數(shù): sqrt() , log() , arange() , astype() 和 sum() ceil() , modf() , where() , ravel() 和 take() sort() 和 outer() diff() , sign() 和 eig() histogram() 和 polyfit() compress() 和 randint() 我們將在以下秘籍

    2023年04月17日
    瀏覽(20)
  • jupyter notebook內(nèi)核啟動失敗&pycharm里無法運行jupyter notebook程序

    jupyter notebook內(nèi)核啟動失敗&pycharm里無法運行jupyter notebook程序

    提示:本人下載anaconda的背景是:之前下了一個miniconda,后面卸載了,可能沒卸干凈,然后重新下來一個anaconda:配置好環(huán)境變量之后,jupyter notebook一直啟動失敗,在網(wǎng)上查了原因可能是反復(fù)安裝anaconda時導(dǎo)致的python的kernel內(nèi)核啟動失敗 1.此頁面是在anaconda prompt里面輸入指令

    2024年02月06日
    瀏覽(18)
  • jupyter notebook和pycharm中配置pytorch環(huán)境,及jupyter notebook內(nèi)核創(chuàng)建

    jupyter notebook和pycharm中配置pytorch環(huán)境,及jupyter notebook內(nèi)核創(chuàng)建

    anaconda已經(jīng)成功安裝,并且可以成功打開jupyter notebook(可以參加我的另一篇博文:windows下anaconda的下載安裝) pycharm已經(jīng)成功安裝,并且可以成功打開(社區(qū)版本和專業(yè)版的都可以,ps:社區(qū)辦免費,但是不可以遠程連接服務(wù)器,專業(yè)版要付費或者學(xué)生身份可以免費申請,可以

    2024年02月07日
    瀏覽(55)
  • 【Python 零基礎(chǔ)入門】Numpy 常用函數(shù) 數(shù)組操作 & 數(shù)學(xué)運算

    【Python 零基礎(chǔ)入門】Numpy 常用函數(shù) 數(shù)組操作 & 數(shù)學(xué)運算

    Numpy (Numerical Python) 是 Python 編程語言的一個擴展程序庫, 支持大量的維度數(shù)組與矩陣運算, 并提供了大量的數(shù)學(xué)函數(shù)庫. Numpy 利用了多線程數(shù)組來存儲和處理大型數(shù)據(jù)集, 從而提供了一個高效的方式來進行數(shù)值計算, 特別是對于矩陣預(yù)算和線性代數(shù). np.assarray 可以將輸入轉(zhuǎn)換為

    2024年02月05日
    瀏覽(21)
  • Jupyter Notebook/Python

    pip install graphviz -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 超時 pip3 install --index-url https://pypi.douban.com/simple graphviz pip install --target=./tutorial-env/lib/python3.7/site-packages graphviz pip install graphviz --target=/usr/bin/tutorial-env/lib/python3.7/site-packages/graphvi Looking in indexes: https://pypi.tuna.tsin

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包