在数据分析和科学计算中,经常会遇到需要按照数组的不同维度计算最值的情况。numpy
库提供了很多方便的方法来进行这些计算,本文将详细介绍如何使用 numpy
来按维度求最值。
numpy.amax
和 numpy.amin
分别用于在给定的轴上计算数组的最大值和最小值。这两个函数都接受一个参数 axis
,用于指定计算的维度。
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.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]
如果数组中存在缺失值 NaN
,可以使用 numpy.nanmax
和 numpy.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.]
除了可以计算最值之外,numpy
还提供了 numpy.argmax
和 numpy.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/