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