NumPy數(shù)組排序、過濾與隨機數(shù)生成詳解
NumPy 數(shù)組排序
排序數(shù)組
排序數(shù)組意味著將元素按特定順序排列。順序可以是數(shù)字大小、字母順序、升序或降序等。
NumPy 的 ndarray
對象提供了一個名為 sort()
的函數(shù),用于對數(shù)組進行排序。
示例:
import numpy as np arr = np.array([3, 2, 0, 1]) print(np.sort(arr))
輸出:
[0 1 2 3]
注意:
sort()
方法會返回數(shù)組的副本,原始數(shù)組不會被修改。 可以對字符串數(shù)組、布爾數(shù)組等其他數(shù)據(jù)類型進行排序。
排序二維數(shù)組
對于二維數(shù)組,sort()
方法會對每一行進行排序。
示例:
import numpy as np arr = np.array([[3, 2, 4], [5, 0, 1]]) print(np.sort(arr))
輸出:
[[0 1 2]
[3 4 5]]
練習
使用 NumPy 正確的方法對以下數(shù)組進行排序:
arr = np.array([3, 2, 0, 1]) x = np.sort( # 請在此處填寫代碼 ) print(x)
解答:
x = np.sort(arr)
NumPy 數(shù)組過濾
過濾數(shù)組
過濾數(shù)組是指從現(xiàn)有數(shù)組中選取部分元素,并創(chuàng)建新的數(shù)組。
在 NumPy 中,可以使用布爾索引列表來過濾數(shù)組。布爾索引列表是一個與數(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 的元素,因為 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]
練習
使用 NumPy 的直接過濾方法,從以下數(shù)組中過濾出所有平方為偶數(shù)的元素:
import numpy as np arr = np.
NumPy 中的隨機數(shù)
什么是隨機數(shù)?
隨機數(shù)是指無法通過確定性方法預測其值的數(shù)據(jù)。通常情況下,隨機數(shù)是指在一定范圍內(nèi)均勻分布的數(shù)字。
在計算機中,由于程序的確定性,不可能生成真正的隨機數(shù)。因此,通常使用偽隨機數(shù)來代替隨機數(shù)。偽隨機數(shù)是通過算法生成的,但看起來像隨機數(shù)。
NumPy 中的隨機數(shù)生成
NumPy 提供了 random
模塊用于生成隨機數(shù)。該模塊提供了多種方法,可以生成不同類型和分布的隨機數(shù)。
生成隨機整數(shù)
randint(low, high, size)
:生成指定范圍內(nèi)的隨機整數(shù)。 low
:下限,默認為 0。 high
:上限,不包括上限本身。 size
:輸出數(shù)組的形狀。
示例:
import numpy as np # 生成 10 個介于 0 和 100 之間的隨機整數(shù) x = np.random.randint(0, 101, size=10) print(x)
生成隨機浮點數(shù)
rand(size)
:生成介于 0 和 1 之間的隨機浮點數(shù)。 size
:輸出數(shù)組的形狀。
示例:
import numpy as np # 生成 5 個隨機浮點數(shù) x = np.random.rand(5) print(x)
從數(shù)組中生成隨機數(shù)
choice(a, size, replace)
:從數(shù)組 a
中隨機選擇元素。 a
:源數(shù)組。 size
:輸出數(shù)組的形狀。 replace
:是否允許重復選擇元素,默認為 False
。
示例:
import numpy as np # 從數(shù)組 [1, 2, 3, 4, 5] 中隨機選擇 3 個元素 x = np.random.choice([1, 2, 3, 4, 5], size=3) print(x)
生成指定分布的隨機數(shù)
NumPy 還提供了其他方法來生成特定分布的隨機數(shù),例如正態(tài)分布、均勻分布、指數(shù)分布等。
randn(size)
:生成服從標準正態(tài)分布的隨機數(shù)。 randm(size)
:生成服從均勻分布的隨機整數(shù)。 beta(a, b, size)
:生成服從 Beta 分布的隨機數(shù)。 gamma(shape, scale, size)
:生成服從 Gamma 分布的隨機數(shù)。 poisson(lam, size)
:生成服從泊松分布的隨機整數(shù)。
例如,生成 10 個服從標準正態(tài)分布的隨機數(shù):
import numpy as np x = np.random.randn(10) print(x)
練習
- 使用
randint
方法生成一個包含 20 個介于 100 到 200 之間的隨機整數(shù)的數(shù)組。 - 使用
rand
方法生成一個包含 15 個介于 0 和 1 之間的隨機浮點數(shù)的數(shù)組。 - 從數(shù)組
[1, 3, 5, 7, 9]
中隨機選擇 10 個元素,并允許重復。 - 生成 5 個服從標準正態(tài)分布的隨機數(shù)。
解決方案
import numpy as np # 1. 使用 randint 方法生成隨機整數(shù)數(shù)組 random_ints = np.random.randint(100, 201, size=20) print(random_ints) # 2. 使用 rand 方法生成隨機浮點數(shù)數(shù)組 random_floats = np.random.rand(15) print(random_floats) # 3. 從數(shù)組中隨機選擇元素 random_elements = np.random.choice([1, 3, 5, 7, 9], size=10, replace=True) print(random_elements) # 4. 生成服從標準正態(tài)分布的隨機數(shù) normal_randoms = np.random.randn(5) print(normal_randoms)
最后
以上就是NumPy數(shù)組排序、過濾與隨機數(shù)生成詳解的詳細內(nèi)容,更多關(guān)于NumPy數(shù)組排序過濾及生成的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python機器學習pytorch模型選擇及欠擬合和過擬合詳解
如何發(fā)現(xiàn)可以泛化的模式是機器學習的根本問題,將模型在訓練數(shù)據(jù)上過擬合得比潛在分布中更接近的現(xiàn)象稱為過擬合,用于對抗過擬合的技術(shù)稱為正則化2021-10-10使用python?matplotlib?contour畫等高線圖的詳細過程講解
最近學習了matplotlib中的高線圖的繪制,所以下面這篇文章主要給大家介紹了關(guān)于使用python?matplotlib?contour畫等高線圖的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-08-08Python input函數(shù)實現(xiàn)獲取鍵盤輸入的字符串流程講解
這篇文章主要介紹了Python input函數(shù)實現(xiàn)獲取鍵盤輸入的字符串流程,input()是Python的內(nèi)置函數(shù),用于從控制臺讀取用戶輸入的內(nèi)容。input()函數(shù)總是以字符串的形式來處理用戶輸入的內(nèi)容,所以用戶輸入的內(nèi)容可以包含任何字符2023-01-01Python實現(xiàn)在數(shù)字中添加千位分隔符的方法小結(jié)
在數(shù)據(jù)處理和數(shù)據(jù)可視化中,經(jīng)常需要對大數(shù)值進行格式化,其中一種常見的需求是在數(shù)字中添加千位分隔符,本文為大家整理了三種常見方法,希望對大家有所幫助2024-01-01Python讀取Windows和Linux的CPU、GPU、硬盤等部件溫度的讀取方法
本文詳細介紹了如何使用Python在Windows和Linux系統(tǒng)上通過OpenHardwareMonitor和psutil庫讀取CPU、GPU等部件的溫度,包括Windows下的兩種方法以及Linux下的簡單實現(xiàn),感興趣的小伙伴跟著小編一起來看看吧2025-02-02

使用Python監(jiān)控文件內(nèi)容變化代碼實例