numpy 按维度求最值

2024年06月08日 numpy 按维度求最值 极客笔记

numpy 按维度求最值

在数据分析和科学计算中,经常会遇到需要按照数组的不同维度计算最值的情况。numpy 库提供了很多方便的方法来进行这些计算,本文将详细介绍如何使用 numpy 来按维度求最值。

1. numpy.amax 和 numpy.amin

numpy.amaxnumpy.amin 分别用于在给定的轴上计算数组的最大值和最小值。这两个函数都接受一个参数 axis,用于指定计算的维度。

numpy.amax

import numpy as np

arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# 按行计算最大值
max_row = np.amax(arr, axis=1)
print("每行的最大值:", max_row)

# 按列计算最大值
max_col = np.amax(arr, axis=0)
print("每列的最大值:", max_col)

运行结果:

每行的最大值: [3 6]
每列的最大值: [4 5 6]

numpy.amin

numpy.amin 的用法与 numpy.amax 类似,可以按照同样的方式计算数组的最小值。

import numpy as np

arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# 按行计算最小值
min_row = np.amin(arr, axis=1)
print("每行的最小值:", min_row)

# 按列计算最小值
min_col = np.amin(arr, axis=0)
print("每列的最小值:", min_col)

运行结果:

每行的最小值: [1 4]
每列的最小值: [1 2 3]

2. numpy.nanmax 和 numpy.nanmin

如果数组中存在缺失值 NaN,可以使用 numpy.nanmaxnumpy.nanmin 来计算数组的最大值和最小值。这两个函数也可以按给定的轴进行计算。

import numpy as np

arr = np.array([[1, np.nan, 3],
                [4, 5, 6]])

# 按行计算最大值(忽略NaN)
max_row = np.nanmax(arr, axis=1)
print("每行的最大值(忽略NaN):", max_row)

# 按列计算最大值(忽略NaN)
max_col = np.nanmax(arr, axis=0)
print("每列的最大值(忽略NaN):", max_col)

运行结果:

每行的最大值(忽略NaN): [ 3.  6.]
每列的最大值(忽略NaN): [4. 5. 6.]

3. numpy.argmax 和 numpy.argmin

除了可以计算最值之外,numpy 还提供了 numpy.argmaxnumpy.argmin 函数来查找最值所在的索引。

import numpy as np

arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# 按行查找最大值的索引
argmax_row = np.argmax(arr, axis=1)
print("每行最大值的索引:", argmax_row)

# 按列查找最小值的索引
argmin_col = np.argmin(arr, axis=0)
print("每列最小值的索引:", argmin_col)

运行结果:

每行最大值的索引: [2 2]
每列最小值的索引: [0 0 0]

结语

通过使用 numpy 库提供的相关函数,我们可以方便地按维度计算数组的最值。

本文链接:http://so.lmcjl.com/news/6188/

展开阅读全文