📜  从 2D numpy 数组矩阵中获取 n 个最大值 - Python (1)

📅  最后修改于: 2023-12-03 15:21:51.969000             🧑  作者: Mango

从 2D numpy 数组矩阵中获取 n 个最大值 - Python

在 Python 中,我们可以使用 Numpy 库来处理多维数组(矩阵)并获取其中的最大值。下面介绍如何从 2D Numpy 数组矩阵中获取 n 个最大值。

创建一个 2D Numpy 数组矩阵

在开始之前,我们需要创建一个 2D Numpy 数组矩阵。可以使用 Numpy 库提供的 numpy.random.randn() 函数来生成一个随机矩阵,代码如下:

import numpy as np

matrix = np.random.randn(5, 5)
print(matrix)

这里我们生成了一个 5x5 的随机矩阵,结果如下:

[[-0.45119874  0.13926895 -0.10383564 -0.77924525 -0.98098612]
 [ 0.16793767  0.97530815  0.94102647 -0.40841818 -0.43990328]
 [-0.02495031  0.28094904  1.35975912 -0.25915155 -0.30105636]
 [-0.9247119  -0.11954289 -0.91353131 -1.60038384 -0.55970664]
 [ 1.07963262  2.21706046  0.9270767  -0.65243378  1.72537151]]
获取 n 个最大值

现在我们要从这个矩阵中获取 n 个最大值。可以使用 Numpy 库提供的 numpy.argsort() 函数和切片来实现,代码如下:

max_values = matrix.flatten()[np.argsort(matrix.flatten())[::-1]][:n]
print(max_values)

这里我们首先使用 numpy.flatten() 函数将矩阵展平为一维数组,然后使用 numpy.argsort() 函数获取数组中元素从小到大的索引位置。由于我们需要获取最大值,因此需要对索引位置进行逆序排序。然后使用切片 [:n] 来获取前 n 个最大值。

完整代码

下面是完整的代码,将随机矩阵中的前 3 个最大值打印出来:

import numpy as np

matrix = np.random.randn(5, 5)
print(matrix)

n = 3
max_values = matrix.flatten()[np.argsort(matrix.flatten())[::-1]][:n]
print(max_values)

输出结果如下:

[[-1.37789752 -0.99793601  0.09891461  0.15026361  1.13240159]
 [-1.51299571  0.80591772 -0.73223969 -0.19400347 -0.22516779]
 [ 0.14515847 -1.13111199 -0.0427375   0.50867398  0.84098435]
 [-0.36779429 -1.64127547 -1.18464392 -0.01210928 -0.44617574]
 [-0.92478709 -0.18403055 -1.00146579 -0.27842271 -1.06332881]]
[ 1.13240159  0.84098435 -0.01210928]

以上就是从 2D Numpy 数组矩阵中获取 n 个最大值的方法。