NumPy數(shù)組排序、過濾與隨機(jī)數(shù)生成詳解
NumPy 數(shù)組排序
排序數(shù)組
排序數(shù)組意味著將元素按特定順序排列。順序可以是數(shù)字大小、字母順序、升序或降序等。
NumPy 的 ndarray 對象提供了一個(gè)名為 sort() 的函數(shù),用于對數(shù)組進(jìn)行排序。
示例:
import numpy as np arr = np.array([3, 2, 0, 1]) print(np.sort(arr))
輸出:
[0 1 2 3]
注意:
sort() 方法會返回?cái)?shù)組的副本,原始數(shù)組不會被修改。 可以對字符串?dāng)?shù)組、布爾數(shù)組等其他數(shù)據(jù)類型進(jìn)行排序。
排序二維數(shù)組
對于二維數(shù)組,sort() 方法會對每一行進(jìn)行排序。
示例:
import numpy as np arr = np.array([[3, 2, 4], [5, 0, 1]]) print(np.sort(arr))
輸出:
[[0 1 2]
[3 4 5]]
練習(xí)
使用 NumPy 正確的方法對以下數(shù)組進(jìn)行排序:
arr = np.array([3, 2, 0, 1])
x = np.sort(
# 請?jiān)诖颂幪顚懘a
)
print(x)
解答:
x = np.sort(arr)
NumPy 數(shù)組過濾
過濾數(shù)組
過濾數(shù)組是指從現(xiàn)有數(shù)組中選取部分元素,并創(chuàng)建新的數(shù)組。
在 NumPy 中,可以使用布爾索引列表來過濾數(shù)組。布爾索引列表是一個(gè)與數(shù)組索引相對應(yīng)的布爾值列表。
如果索引處的值為 True,則該元素會被包含在過濾后的數(shù)組中;如果為 False,則會被排除。
示例:
import numpy as np arr = np.array([41, 42, 43, 44]) x = [True, False, True, False] newarr = arr[x] print(newarr)
輸出:
[41 43]
解釋:
新數(shù)組 newarr 只包含 arr 中索引為 0 和 2 的元素,因?yàn)?nbsp;x 對應(yīng)索引處的值為 True。
創(chuàng)建過濾數(shù)組
通常情況下,我們需要根據(jù)條件來創(chuàng)建過濾數(shù)組。
示例:
僅返回大于 42 的元素:
import numpy as np arr = np.array([41, 42, 43, 44]) filter_arr = arr > 42 newarr = arr[filter_arr] print(filter_arr) print(newarr)
輸出:
[False True True True]
[43 44]
僅返回偶數(shù)元素:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) filter_arr = arr % 2 == 0 newarr = arr[filter_arr] print(filter_arr) print(newarr)
輸出:
[False True False True False True False]
[2 4 6]
直接從數(shù)組創(chuàng)建過濾
NumPy 提供了一種更簡潔的方式來創(chuàng)建過濾數(shù)組,即直接在條件中使用數(shù)組:
示例:
僅返回大于 42 的元素:
import numpy as np arr = np.array([41, 42, 43, 44]) newarr = arr[arr > 42] print(newarr)
輸出:
[43 44]
僅返回偶數(shù)元素:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) newarr = arr[arr % 2 == 0] print(newarr)
輸出:
[2 4 6]
練習(xí)
使用 NumPy 的直接過濾方法,從以下數(shù)組中過濾出所有平方為偶數(shù)的元素:
import numpy as np arr = np.
NumPy 中的隨機(jī)數(shù)
什么是隨機(jī)數(shù)?
隨機(jī)數(shù)是指無法通過確定性方法預(yù)測其值的數(shù)據(jù)。通常情況下,隨機(jī)數(shù)是指在一定范圍內(nèi)均勻分布的數(shù)字。
在計(jì)算機(jī)中,由于程序的確定性,不可能生成真正的隨機(jī)數(shù)。因此,通常使用偽隨機(jī)數(shù)來代替隨機(jī)數(shù)。偽隨機(jī)數(shù)是通過算法生成的,但看起來像隨機(jī)數(shù)。
NumPy 中的隨機(jī)數(shù)生成
NumPy 提供了 random 模塊用于生成隨機(jī)數(shù)。該模塊提供了多種方法,可以生成不同類型和分布的隨機(jī)數(shù)。
生成隨機(jī)整數(shù)
randint(low, high, size):生成指定范圍內(nèi)的隨機(jī)整數(shù)。 low:下限,默認(rèn)為 0。 high:上限,不包括上限本身。 size:輸出數(shù)組的形狀。
示例:
import numpy as np # 生成 10 個(gè)介于 0 和 100 之間的隨機(jī)整數(shù) x = np.random.randint(0, 101, size=10) print(x)
生成隨機(jī)浮點(diǎn)數(shù)
rand(size):生成介于 0 和 1 之間的隨機(jī)浮點(diǎn)數(shù)。 size:輸出數(shù)組的形狀。
示例:
import numpy as np # 生成 5 個(gè)隨機(jī)浮點(diǎn)數(shù) x = np.random.rand(5) print(x)
從數(shù)組中生成隨機(jī)數(shù)
choice(a, size, replace):從數(shù)組 a 中隨機(jī)選擇元素。 a:源數(shù)組。 size:輸出數(shù)組的形狀。 replace:是否允許重復(fù)選擇元素,默認(rèn)為 False。
示例:
import numpy as np # 從數(shù)組 [1, 2, 3, 4, 5] 中隨機(jī)選擇 3 個(gè)元素 x = np.random.choice([1, 2, 3, 4, 5], size=3) print(x)
生成指定分布的隨機(jī)數(shù)
NumPy 還提供了其他方法來生成特定分布的隨機(jī)數(shù),例如正態(tài)分布、均勻分布、指數(shù)分布等。
randn(size):生成服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)。 randm(size):生成服從均勻分布的隨機(jī)整數(shù)。 beta(a, b, size):生成服從 Beta 分布的隨機(jī)數(shù)。 gamma(shape, scale, size):生成服從 Gamma 分布的隨機(jī)數(shù)。 poisson(lam, size):生成服從泊松分布的隨機(jī)整數(shù)。
例如,生成 10 個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù):
import numpy as np x = np.random.randn(10) print(x)
練習(xí)
- 使用
randint方法生成一個(gè)包含 20 個(gè)介于 100 到 200 之間的隨機(jī)整數(shù)的數(shù)組。 - 使用
rand方法生成一個(gè)包含 15 個(gè)介于 0 和 1 之間的隨機(jī)浮點(diǎn)數(shù)的數(shù)組。 - 從數(shù)組
[1, 3, 5, 7, 9]中隨機(jī)選擇 10 個(gè)元素,并允許重復(fù)。 - 生成 5 個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)。
解決方案
import numpy as np # 1. 使用 randint 方法生成隨機(jī)整數(shù)數(shù)組 random_ints = np.random.randint(100, 201, size=20) print(random_ints) # 2. 使用 rand 方法生成隨機(jī)浮點(diǎn)數(shù)數(shù)組 random_floats = np.random.rand(15) print(random_floats) # 3. 從數(shù)組中隨機(jī)選擇元素 random_elements = np.random.choice([1, 3, 5, 7, 9], size=10, replace=True) print(random_elements) # 4. 生成服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù) normal_randoms = np.random.randn(5) print(normal_randoms)
最后
以上就是NumPy數(shù)組排序、過濾與隨機(jī)數(shù)生成詳解的詳細(xì)內(nèi)容,更多關(guān)于NumPy數(shù)組排序過濾及生成的資料請關(guān)注腳本之家其它相關(guān)文章!
- NumPy隨機(jī)數(shù)據(jù)分布與Seaborn可視化詳解
- Numpy創(chuàng)建數(shù)組和隨機(jī)數(shù)組的方法小結(jié)
- numpy中幾種隨機(jī)數(shù)生成函數(shù)的用法
- Python NumPy中的隨機(jī)數(shù)及ufuncs函數(shù)使用示例詳解
- numpy 產(chǎn)生隨機(jī)數(shù)的幾種方法
- numpy中生成隨機(jī)數(shù)的幾種常用函數(shù)(小結(jié))
- python numpy之np.random的隨機(jī)數(shù)函數(shù)使用介紹
- python numpy 常用隨機(jī)數(shù)的產(chǎn)生方法的實(shí)現(xiàn)
- Python使用numpy產(chǎn)生正態(tài)分布隨機(jī)數(shù)的向量或矩陣操作示例
- NumPy隨機(jī)數(shù)生成函數(shù)的多種實(shí)現(xiàn)方法
相關(guān)文章
Python 實(shí)現(xiàn) PPT 轉(zhuǎn) HTML的實(shí)現(xiàn)示例
本文介紹了利用Spire.Presentation for Python這一專業(yè)組件,通過編程方式實(shí)現(xiàn)演示文稿到 HTML 的精準(zhǔn)轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-03-03
Python 爬蟲之超鏈接 url中含有中文出錯(cuò)及解決辦法
這篇文章主要介紹了Python 爬蟲之超鏈接 url中含有中文出錯(cuò)及解決辦法的相關(guān)資料,出現(xiàn)UnicodeEncodeError: 'ascii' codec can't encode characters,的錯(cuò)誤解決辦法,需要的朋友可以參考下2017-08-08
解決pycharm不能自動(dòng)補(bǔ)全第三方庫的函數(shù)和屬性問題
這篇文章主要介紹了解決pycharm不能自動(dòng)補(bǔ)全第三方庫的函數(shù)和屬性問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
python實(shí)現(xiàn)一般游戲的自動(dòng)點(diǎn)擊具體操作
這篇文章主要介紹了python實(shí)現(xiàn)一般游戲的自動(dòng)點(diǎn)擊,本文給大家分享具體操作代碼及需要的軟件,需要的朋友可以參考下2021-10-10
Python實(shí)現(xiàn)簡單多線程任務(wù)隊(duì)列
本文給大家介紹的是使用很簡單的代碼實(shí)現(xiàn)的多線程任務(wù)隊(duì)列,給大家一個(gè)思路,希望對大家學(xué)習(xí)python能夠有所幫助2016-02-02
Python read函數(shù)按字節(jié)(字符)讀取文件的實(shí)現(xiàn)
這篇文章主要介紹了Python read函數(shù)按字節(jié)(字符)讀取文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python中functools.partial設(shè)置回調(diào)函數(shù)處理異步任務(wù)使用
本文主要介紹了Python中functools.partial設(shè)置回調(diào)函數(shù)處理異步任務(wù)使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-12-12

