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
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注