查找 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 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告