查詢 NumPy 陣列中最小的 k 個值


查詢 NumPy 陣列中最小的 k 個值

安裝和語法

Pip,Python 的軟體包安裝程式,通常用於安裝NumPy

pip install numpy

可以使用以下函式來識別具有最小值的k個 NumPy 陣列元素 -

np.sort(array)[:k]

這在按升序排序後返回排序陣列的前 k 個專案。陣列可以使用下面顯示的替代語法進行排序,這將檢索最後 k 個條目並按降序對陣列進行排序 -

np.sort(array)[::-1][:k]

演算法

  • 查詢 NumPy 陣列中最小的 k 個值的演算法相對簡單 -

  • 按升序對陣列進行排序

  • 返回排序陣列的前 k 個元素

  • 要發現最大的 k 個值,您也可以按降序對陣列進行排序並檢索最後 k 個條目。

示例

import numpy as np
array = np.array([3, 7, 1, 4, 2, 8, 5, 9, 6])
k = 3
result = np.sort(array)[:k]
print(result)

輸出

[1 2 3]

我們希望從數字陣列中識別三個最低的值。使用np.sort()方法按升序對陣列進行排序,然後使用[:k]擷取前三個條目。

示例

import numpy as np
array = np.array([3.2, 7.8, 1.5, 4.6, 2.9, 8.1, 5.4, 9.3, 6.7])
k = 4
result = np.sort(array)[::-1][:k]
print(result)

輸出

[9.3 8.1 7.8 6.7]

我們正在尋找浮點數字陣列中的四個最大值。在使用np.sort()方法使用[::-1]按降序對陣列進行排序後,我們使用[:k]切片前四個條目。

示例

import numpy as np
array = np.array([[1, 2], [3, 4]])
k = 2
result = np.sort(array.flatten())[:k]
print(result)

輸出

[1 2]

flatten()函式用於將二維陣列轉換為一維陣列,然後使用np.sort()和切片在陣列中找到兩個最低的值。

示例

import numpy as np

# Generate a random 2-dimensional array of size 5x5
array = np.random.randint(0, 10, size=(5, 5)).astype(float) # convert to float

# Print the original array
print("Original array:")
print(array)

# Flatten the array to make it 1-dimensional
flat_array = array.flatten()

# Find the 3 smallest values in the flattened array
k = 3
smallest_values = np.sort(flat_array)[:k]

# Create a mask for the smallest values
mask = np.isin(array, smallest_values)

# Replace the smallest values with NaNs
array[mask] = np.nan 

# Print the modified array
print("Modified array:")
print(array)

輸出

Original array:
[[5. 7. 7. 6. 4.]
 [6. 2. 5. 4. 3.]
 [5. 1. 2. 0. 9.]
 [7. 9. 7. 1. 5.]
 [3. 0. 2. 5. 2.]]
Modified array:
[[ 5.  7.  7.  6.  4.]
 [ 6.  2.  5.  4.  3.]
 [ 5. nan  2. nan  9.]
 [ 7.  9.  7. nan  5.]
 [ 3. nan  2.  5.  2.]]

使用`np.random.randint()`生成一個隨機的二維整數陣列。然後,我們使用`array.flatten()`展平陣列,並使用`np.sort()`找到 3 個最小值。我們使用`np.isin()`為最小值建立掩碼,並使用`np.nan`替換它們。最後,我們列印修改後的陣列以驗證最小值是否已替換為 NaN。

應用

  • 識別資料集中異常值

  • 根據專案的值進行排名

  • 分析股市趨勢

  • 機器學習和資料探勘演算法

結論

這篇博文中介紹了在 NumPy 陣列中查詢k 個最小值的挑戰。除了許多簡短的程式碼示例和一個帶有詳細解釋的大型示例之外,我們還包含了克服此問題的語法和技術,並討論了此問題在資料分析等領域中的一些應用方式。查詢 k 個最小值只是 NumPy 用於處理多維陣列和矩陣的強大工具包提供的眾多有用功能之一。

更新於: 2023 年 8 月 21 日

442 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.