Python中排除小于1e-12的值计算数组的最小与最大值
解决Numpy数组排除小值后求最小最大值的问题
要计算数组A的最小和最大值,但需排除所有小于1e-12的元素,原代码未做过滤导致结果包含极小值,可通过布尔索引过滤后再求极值解决。
原代码及问题
原代码:
import numpy as np A=np.array([[9.49108487e-05], [1.05634586e-19], [5.68676707e-17], [1.02453254e-06], [2.48792902e-16], [1.02453254e-06]]) Min=np.min(A) Max=np.max(A) print(Min,Max)
当前输出:
1.05634586e-19 9.49108487e-05
期望输出:
1.02453254e-06 9.49108487e-05
修改后的代码
import numpy as np A=np.array([[9.49108487e-05], [1.05634586e-19], [5.68676707e-17], [1.02453254e-06], [2.48792902e-16], [1.02453254e-06]]) # 过滤掉小于1e-12的元素 filtered_A = A[A >= 1e-12] Min = np.min(filtered_A) Max = np.max(filtered_A) print(Min, Max)
说明
通过A >= 1e-12生成布尔索引,筛选出所有大于等于1e-12的元素组成新数组,再对这个过滤后的数组求最小和最大值,就能得到符合要求的结果。运行后输出与期望一致:
1.02453254e-06 9.49108487e-05
内容的提问来源于stack exchange,提问作者user20032724
相关产品推荐
相关产品推荐

