最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NumPy 通用函數(shù)(ufunc)的實(shí)現(xiàn)

 更新時間:2026年01月08日 09:33:56   作者:溯維_Particle  
本文主要介紹了NumPy 通用函數(shù)(ufunc)的實(shí)現(xiàn),包括數(shù)學(xué)運(yùn)算類、統(tǒng)計與聚合類和數(shù)組操作類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

NumPy 中的通用函數(shù)(ufunc)是一類對數(shù)組元素進(jìn)行逐元素操作的函數(shù),它們能高效地處理數(shù)組的數(shù)學(xué)運(yùn)算、統(tǒng)計聚合與數(shù)組操作等任務(wù),返回結(jié)果也是數(shù)組。下面我們針對常用的 ufunc 進(jìn)行分類說明。

1  數(shù)學(xué)運(yùn)算類 ufunc

1.1  指數(shù)函數(shù):np.exp()

計算數(shù)組中每個元素的自然指數(shù)(即 ,其中  ≈ 2.71828)。

代碼示例:

import numpy as np
B = np.arange(3)  # 創(chuàng)建數(shù)組[0, 1, 2]
print("原始數(shù)組B:", B)
print("np.exp(B)的結(jié)果:", np.exp(B))  # 輸出[1.         2.71828183 7.3890561]

1.2  平方根函數(shù):np.sqrt()

計算數(shù)組中每個元素的平方根。

代碼示例:

print("np.sqrt(B)的結(jié)果:", np.sqrt(B))  # 輸出[0.         1.         1.41421356]

1.3  加法函數(shù):np.add()

對兩個數(shù)組執(zhí)行逐元素加法運(yùn)算。

代碼示例:

C = np.array([2., -1., 4.])
print("原始數(shù)組C:", C)
print("np.add(B, C)的結(jié)果:", np.add(B, C))  # 輸出[2.  0.  6.]

2  統(tǒng)計與聚合類 ufunc

這類函數(shù)用于對數(shù)組進(jìn)行統(tǒng)計分析,如求極值、求和、求均值等。

2.1  最大值函數(shù):np.max()

返回數(shù)組中的最大值,也可通過數(shù)組方法 arr.max() 調(diào)用。

代碼示例:

arr = np.array([3, 1, 4, 1, 5])
print("數(shù)組最大值:", np.max(arr))  # 輸出5

2.2  最小值函數(shù):np.min()

返回數(shù)組中的最小值,也可通過數(shù)組方法 arr.min() 調(diào)用。

代碼示例:

print("數(shù)組最小值:", np.min(arr))  # 輸出1

2.3  求和函數(shù):np.sum()

計算數(shù)組所有元素的和,也可通過數(shù)組方法 arr.sum() 調(diào)用。

代碼示例:

print("數(shù)組元素和:", np.sum(arr))  # 輸出3+1+4+1+5=14

2.4  均值函數(shù):np.mean()

計算數(shù)組元素的算術(shù)平均值,也可通過數(shù)組方法 arr.mean() 調(diào)用。

代碼示例:

print("數(shù)組均值:", np.mean(arr))  # 輸出14/5=2.8

3  數(shù)組操作類 ufunc

這類函數(shù)用于對數(shù)組結(jié)構(gòu)或元素順序進(jìn)行操作。

3.1  排序函數(shù):np.sort()

對數(shù)組元素進(jìn)行排序(返回新數(shù)組,原數(shù)組不變)。

代碼示例:

arr = np.array([5, 2, 9, 1, 7])
sorted_arr = np.sort(arr)
print("排序后數(shù)組:", sorted_arr)  # 輸出[1 2 5 7 9]

3.2  索引排序函數(shù):np.argsort()

返回數(shù)組元素排序后的索引位置(即原數(shù)組中元素從小到大的位置編號)。

【數(shù)組的索引】

在 NumPy 中,“索引” 是訪問、修改或篩選數(shù)組元素的關(guān)鍵方式,其功能豐富且靈活。和 Python 列表類似,一維數(shù)組的索引從 0 開始,可通過整數(shù)索引獲取單個元素,也能用切片(如arr[1:4])獲取連續(xù)區(qū)間的元素;對于多維數(shù)組,需用逗號分隔的索引元組來指定維度,比如二維數(shù)組 arr 可通過 arr[行索引, 列索引] 精準(zhǔn)定位元素,也能對某一維度單獨(dú)切片(如 arr[:, 2] 獲取所有行的第三列)。此外,布爾索引更是便捷,通過構(gòu)造與原數(shù)組形狀相同的布爾數(shù)組(如arr > 10),可直接篩選出滿足條件的元素,這在數(shù)據(jù)清洗和分析中極為實(shí)用。簡言之,索引機(jī)制讓 NumPy 數(shù)組的元素操作既高效又靈活,是掌握 NumPy 數(shù)據(jù)處理能力的核心基礎(chǔ)之一。

代碼示例:

indices = np.argsort(arr)
print("排序索引:", indices)  # 輸出[3 1 0 4 2],表示原數(shù)組第3個元素(1)最小,第1個元素(2)次之……

3.3  非零元素查找:np.nonzero()

返回數(shù)組中非零元素的索引

代碼示例:

arr = np.array([0, 2, 0, 5, 0])
nonzero_indices = np.nonzero(arr)
print("非零元素索引:", nonzero_indices)  # 輸出(array([1, 3]),),表示第1、3個元素非零

代碼示例中,(array([1, 3]),) 是 NumPy 中 np.nonzero() 函數(shù)返回的結(jié)果格式,本質(zhì)是一個包含 1 個 NumPy 數(shù)組的元組。

其中,元組內(nèi)的 array([1, 3]) 表示 “非零元素在數(shù)組中的索引位置”—— 比如當(dāng)對一維數(shù)組 [0, 2, 0, 5, 0] 使用 np.nonzero() 時,數(shù)組中值不為 0 的元素(2 和 5)分別位于第 1 位和第 3 位(NumPy 索引從 0 開始),因此返回該索引數(shù)組;而外層的元組結(jié)構(gòu)是為了適配多維數(shù)組場景:若處理的是二維數(shù)組,np.nonzero() 會返回包含兩個數(shù)組的元組(分別對應(yīng)非零元素的 “行索引” 和 “列索引”),即使是一維數(shù)組,也保持元組格式以保證接口一致性,末尾的逗號則是 Python 中單個元素元組的標(biāo)準(zhǔn)寫法(避免與普通括號混淆)。

然而,這里的難點(diǎn)在于對于多維數(shù)組的情況。

代碼示例:

# 創(chuàng)建一個形狀為(2, 3, 2)的三維數(shù)組
arr_3d = np.array([
    [[0, 1], [2, 0], [0, 3]],
    [[4, 0], [0, 5], [6, 0]]
])
nonzero_indices = np.nonzero(arr_3d)
print("非零元素的三維索引:", nonzero_indices)

上述代碼運(yùn)行后會輸出:

非零元素的三維索引: (array([0, 0, 0, 1, 1, 1]), array([0, 1, 2, 0, 1, 2]), array([1, 0, 1, 0, 1, 0])) 。

我們可以對 arr_3d,逐個找出非零元素的位置,就能明白這個結(jié)果是怎么來的了。

arr_3d 的形狀是 (2, 3, 2),可以理解為 “2 個深度層,每個深度層有 3 行、2 列”,具體結(jié)構(gòu)如下:

# 深度0的層(arr_3d[0]):
[
  [0, 1],  # 行0:列0是0,列1是1(非零)
  [2, 0],  # 行1:列0是2(非零),列1是0
  [0, 3]   # 行2:列0是0,列1是3(非零)
]

# 深度1的層(arr_3d[1]):
[
  [4, 0],  # 行0:列0是4(非零),列1是0
  [0, 5],  # 行1:列0是0,列1是5(非零)
  [6, 0]   # 行2:列0是6(非零),列1是0
]

接下來,我們逐個找出所有非零元素,并記錄它們的 “三維坐標(biāo)”(深度索引,行索引,列索引):

深度 0、行 0、列 1 的元素是 1(非零)→ 坐標(biāo) (0, 0, 1)
深度 0、行 1、列 0 的元素是 2(非零)→ 坐標(biāo) (0, 1, 0)
深度 0、行 2、列 1 的元素是 3(非零)→ 坐標(biāo) (0, 2, 1)
深度 1、行 0、列 0 的元素是 4(非零)→ 坐標(biāo) (1, 0, 0)
深度 1、行 1、列 1 的元素是 5(非零)→ 坐標(biāo) (1, 1, 1)
深度 1、行 2、列 0 的元素是 6(非零)→ 坐標(biāo) (1, 2, 0)

現(xiàn)在,把這 6 個坐標(biāo)按順序拆分:

所有坐標(biāo)的 “深度索引” 提取出來:0, 0, 0, 1, 1, 1 → 組成第一個數(shù)組 array([0, 0, 0, 1, 1, 1])
所有坐標(biāo)的 “行索引” 提取出來:0, 1, 2, 0, 1, 2 → 組成第二個數(shù)組 array([0, 1, 2, 0, 1, 2])
所有坐標(biāo)的 “列索引” 提取出來:1, 0, 1, 0, 1, 0 → 組成第三個數(shù)組 array([1, 0, 1, 0, 1, 0])

這三個數(shù)組組合起來,就是 np.nonzero(arr_3d) 的返回結(jié)果,每個位置上的三個值對應(yīng)一個非零元素的完整坐標(biāo)。比如第 0 個位置的三個值 (0,0,1),就對應(yīng)第一個非零元素 arr_3d[0,0,1] = 1。

4  總結(jié)

NumPy 的通用函數(shù)(ufunc)是數(shù)組運(yùn)算的核心工具,涵蓋數(shù)學(xué)運(yùn)算、統(tǒng)計分析、數(shù)組操作等多個場景。掌握這些常用 ufunc,能讓你在數(shù)值計算中高效處理數(shù)組任務(wù),為數(shù)據(jù)分析、科學(xué)計算等工作奠定基礎(chǔ)。

到此這篇關(guān)于NumPy 通用函數(shù)(ufunc)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)NumPy 通用函數(shù)ufunc內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用jupyter notebook運(yùn)行python和R的步驟

    使用jupyter notebook運(yùn)行python和R的步驟

    這篇文章主要介紹了使用jupyter notebook運(yùn)行python和R的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 詳細(xì)解讀Python的web.py框架下的application.py模塊

    詳細(xì)解讀Python的web.py框架下的application.py模塊

    這篇文章主要介紹了Python的web.py框架下的application.py模塊,作者深入分析了web.py的源碼,需要的朋友可以參考下
    2015-05-05
  • PID原理與python的簡單實(shí)現(xiàn)和調(diào)參

    PID原理與python的簡單實(shí)現(xiàn)和調(diào)參

    這篇文章主要介紹了PID原理與python的簡單實(shí)現(xiàn)和調(diào)參文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值。感興趣的小伙伴可以參考一下
    2022-08-08
  • python 環(huán)境變量和import模塊導(dǎo)入方法(詳解)

    python 環(huán)境變量和import模塊導(dǎo)入方法(詳解)

    下面小編就為大家?guī)硪黄猵ython 環(huán)境變量和import模塊導(dǎo)入方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python Playwright 文本框操作技巧

    Python Playwright 文本框操作技巧

    這篇文章主要介紹了Python Playwright 文本框操作技巧,包括如何獲得文本框的值,以及向文本框中添加單行和多行文本,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python版本童年游戲冒險島實(shí)現(xiàn)過程

    Python版本童年游戲冒險島實(shí)現(xiàn)過程

    Python的簡潔語法和豐富庫為創(chuàng)建復(fù)雜的冒險游戲提供了便利,這篇文章主要介紹了Python版本童年游戲冒險島實(shí)現(xiàn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-05-05
  • Python最常用的20 個包總結(jié)

    Python最常用的20 個包總結(jié)

    這篇文章主要介紹了Python最常用的20 個包總結(jié),在平時使用Python的過程中,需要用到很多有用的包,今天就來盤點(diǎn)一下常用的包,需要的朋友可以參考下
    2023-04-04
  • 解決PDF 轉(zhuǎn)圖片時丟文字的一種可能方式

    解決PDF 轉(zhuǎn)圖片時丟文字的一種可能方式

    這篇文章主要介紹了解決PDF 轉(zhuǎn)圖片時丟字的一種可能方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python實(shí)現(xiàn)坦克大戰(zhàn)

    python實(shí)現(xiàn)坦克大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)坦克大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用詳解

    Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用詳解

    python中Broadcast機(jī)制非常實(shí)用,在python中的廣播機(jī)制其實(shí)很簡單,下方主要介紹Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用,希望對你有所幫助
    2022-08-08

最新評論

石河子市| 德昌县| 庄河市| 木兰县| 赫章县| 无为县| 梅州市| 清远市| 长治县| 南安市| 湖南省| 抚松县| 博爱县| 环江| 江都市| 永寿县| 武定县| 云南省| 溆浦县| 萝北县| 固原市| 三门峡市| 明水县| 门源| 南部县| 响水县| 江口县| 舒城县| 九龙城区| 苍溪县| 呼伦贝尔市| 仙居县| 贵定县| 繁峙县| 尉氏县| 逊克县| 长寿区| 定南县| 且末县| 阿城市| 合川市|