NumPy數(shù)組排序、過(guò)濾與隨機(jī)數(shù)生成詳解
NumPy 數(shù)組排序
排序數(shù)組
排序數(shù)組意味著將元素按特定順序排列。順序可以是數(shù)字大小、字母順序、升序或降序等。
NumPy 的 ndarray 對(duì)象提供了一個(gè)名為 sort() 的函數(shù),用于對(duì)數(shù)組進(jìn)行排序。
示例:
import numpy as np arr = np.array([3, 2, 0, 1]) print(np.sort(arr))
輸出:
[0 1 2 3]
注意:
sort() 方法會(huì)返回?cái)?shù)組的副本,原始數(shù)組不會(huì)被修改。 可以對(duì)字符串?dāng)?shù)組、布爾數(shù)組等其他數(shù)據(jù)類型進(jìn)行排序。
排序二維數(shù)組
對(duì)于二維數(shù)組,sort() 方法會(huì)對(duì)每一行進(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 正確的方法對(duì)以下數(shù)組進(jìn)行排序:
arr = np.array([3, 2, 0, 1])
x = np.sort(
# 請(qǐng)?jiān)诖颂幪顚?xiě)代碼
)
print(x)
解答:
x = np.sort(arr)
NumPy 數(shù)組過(guò)濾
過(guò)濾數(shù)組
過(guò)濾數(shù)組是指從現(xiàn)有數(shù)組中選取部分元素,并創(chuàng)建新的數(shù)組。
在 NumPy 中,可以使用布爾索引列表來(lái)過(guò)濾數(shù)組。布爾索引列表是一個(gè)與數(shù)組索引相對(duì)應(yīng)的布爾值列表。
如果索引處的值為 True,則該元素會(huì)被包含在過(guò)濾后的數(shù)組中;如果為 False,則會(huì)被排除。
示例:
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 對(duì)應(yīng)索引處的值為 True。
創(chuàng)建過(guò)濾數(shù)組
通常情況下,我們需要根據(jù)條件來(lái)創(chuàng)建過(guò)濾數(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)建過(guò)濾
NumPy 提供了一種更簡(jiǎn)潔的方式來(lái)創(chuàng)建過(guò)濾數(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 的直接過(guò)濾方法,從以下數(shù)組中過(guò)濾出所有平方為偶數(shù)的元素:
import numpy as np arr = np.
NumPy 中的隨機(jī)數(shù)
什么是隨機(jī)數(shù)?
隨機(jī)數(shù)是指無(wú)法通過(guò)確定性方法預(yù)測(cè)其值的數(shù)據(jù)。通常情況下,隨機(jī)數(shù)是指在一定范圍內(nèi)均勻分布的數(shù)字。
在計(jì)算機(jī)中,由于程序的確定性,不可能生成真正的隨機(jī)數(shù)。因此,通常使用偽隨機(jī)數(shù)來(lái)代替隨機(jī)數(shù)。偽隨機(jī)數(shù)是通過(guò)算法生成的,但看起來(lái)像隨機(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 還提供了其他方法來(lái)生成特定分布的隨機(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ù)組排序、過(guò)濾與隨機(jī)數(shù)生成詳解的詳細(xì)內(nèi)容,更多關(guān)于NumPy數(shù)組排序過(guò)濾及生成的資料請(qǐng)關(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標(biāo)準(zhǔn)庫(kù)copy的具體使用
copy模塊是Python標(biāo)準(zhǔn)庫(kù)中用于對(duì)象拷貝的核心模塊,提供了淺拷貝(copy)和深拷貝(deepcopy)兩種對(duì)象復(fù)制機(jī)制,本文主要介紹了Python標(biāo)準(zhǔn)庫(kù)copy的具體使用,感興趣的可以了解一下2025-04-04
Python腳本實(shí)現(xiàn)DNSPod DNS動(dòng)態(tài)解析域名
這篇文章主要介紹了Python腳本實(shí)現(xiàn)DNSPod DNS動(dòng)態(tài)解析域名,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-02-02
PyQt QListWidget修改列表項(xiàng)item的行高方法
今天小編就為大家分享一篇PyQt QListWidget修改列表項(xiàng)item的行高方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
virtualenv實(shí)現(xiàn)多個(gè)版本Python共存
virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個(gè)Python相互獨(dú)立,互不影響,它能夠:1. 在沒(méi)有權(quán)限的情況下安裝新套件 2. 不同應(yīng)用可以使用不同的套件版本 3. 套件升級(jí)不影響其他應(yīng)用2017-08-08

