📅  最后修改于: 2023-12-03 15:21:51.969000             🧑  作者: Mango
在 Python 中,我们可以使用 Numpy 库来处理多维数组(矩阵)并获取其中的最大值。下面介绍如何从 2D Numpy 数组矩阵中获取 n 个最大值。
在开始之前,我们需要创建一个 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 个最大值。可以使用 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 个最大值的方法。