本文介紹了NumPy中的數組排序和過濾功能。`np.sort()`函數用於對數組進行升序排序,對二維數組則按行排序。示例展示瞭如何對一維和二維數組排序。此外,還講解了使用布爾索引來過濾數組,以及直接在條件中操作數組以創建過濾後的數組。最後,介紹了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 數組過濾
過濾數組
過濾數組是指從現有數組中選取部分元素,並創建新的數組。
在 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
。
創建過濾數組
通常情況下,我們需要根據條件來創建過濾數組。
示例:
僅返回大於 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]
直接從數組創建過濾
NumPy 提供了一種更簡潔的方式來創建過濾數組,即直接在條件中使用數組:
示例:
僅返回大於 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 還提供了其他方法來生成特定分佈的隨機數,例如正態分佈、均勻分佈、指數分佈等。
randn(size)
:生成服從標準正態分佈的隨機數。
randm(size)
:生成服從均勻分佈的隨機整數。
beta(a, b, size)
:生成服從 Beta 分佈的隨機數。
gamma(shape, scale, size)
:生成服從 Gamma 分佈的隨機數。
poisson(lam, size)
:生成服從泊松分佈的隨機整數。
例如,生成 10 個服從標準正態分佈的隨機數:
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 個服從標準正態分佈的隨機數。
解決方案
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. 生成服從標準正態分佈的隨機數
normal_randoms = np.random.randn(5)
print(normal_randoms)
最後
為了方便其他設備和平臺的小伙伴觀看往期文章:
微信公眾號搜索:Let us Coding
,關註後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關註