Numpy如何获取多维矩阵中高于阈值的最小绝对值
实现方法
核心思路是将低于阈值的绝对值替换为无穷大,既不改变原始数组维度,又能在取最小值时自动过滤无效值:
import numpy as np np.random.seed(0) matrix = np.random.randn(5,1,10) tolerance = 0.1 # 计算绝对值矩阵 abs_mat = np.abs(matrix) # 将低于阈值的值替换为无穷大,避免被选为最小值 filtered_abs = np.where(abs_mat >= tolerance, abs_mat, np.inf) # 沿最后一维取最小值 result = np.amin(filtered_abs, axis=-1) print(result)
运行后输出结果如下,第三行已经返回符合阈值要求的最小值:
[[0.10321885] [0.12167502] [0.18718385] [0.15494743] [0.21274028]]
边界情况处理
如果某个分组(沿最后一维的切片)所有值都低于阈值,计算结果会返回inf,你可以根据业务需求后续替换为np.nan或者自定义默认值:
# 示例:将inf替换为nan result[np.isinf(result)] = np.nan
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

