查找 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] 对前四个条目进行切片。
示例
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 # 生成一个大小为 5x5 的随机二维数组 array = np.random.randint(0, 10, size=(5, 5)).astype(float) # 转换为浮点数 # 打印原始数组 print("原始数组:") print(array) # 将数组展平,使其成为一维数组 flat_array = array.flatten() # 在展平后的数组中找出 3 个最小值 k = 3 smallest_values = np.sort(flat_array)[:k] # 为最小值创建掩码 mask = np.isin(array, minimal_values) # 将最小值替换为 NaN array[mask] = np.nan # 打印修改后的数组 print("修改后的数组:") print(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.]] 修改后的数组: [[ 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。最后,我们打印修改后的数组以验证最小值是否已被 NaN 替换。
应用
识别数据集中的异常值
根据值对项目进行排名
分析股票市场趋势
机器学习和数据挖掘算法
结论
本博客介绍了识别 NumPy 数组中的 k 个最低值 的挑战。除了大量简短的代码示例和一个带有详尽解释的大型示例外,我们还介绍了解决此问题的语法和技术,并讨论了此问题在数据分析等领域的一些应用方式。查找 k 个最低值只是 NumPy 用于处理多维数组和矩阵的强大工具包提供的众多有用功能之一。