numpy Python中数组的最小值和最大值

mxg2im7a  于 2022-12-04  发布在  Python
关注(0)|答案(4)|浏览(248)

我想计算数组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
83qze16e

83qze16e1#

arr = np.array([9.49108487e-05,1.05634586e-19,5.68676707e-17,1.02453254e-06,2.48792902e-16,1.02453254e-06]) 
mask = arr > 1e-12 
Min = np.min(arr[mask]) 
Max = np.max(arr[mask])
sigwle7e

sigwle7e2#

在获取最小值/最大值之前使用布尔索引进行切片:

B = A[A>1e-12]
Min = np.min(B)
Max = np.max(B)
print(Min, Max)

输出:1.02453254e-06 9.49108487e-05
Barray([9.49108487e-05, 1.02453254e-06, 1.02453254e-06])

5cnsuln7

5cnsuln73#

您可以先选择大于1e-12的数组值,然后获取其最小值和最大值:

>>> A[A > 1e-12].min()
1.02453254e-06
>>> A[A > 1e-12].max()
9.49108487e-05
lzfw57am

lzfw57am4#

若要将小于1 e-12的值排除在最小值和最大值计算之外,可以使用NumPy中的where函数,只选择大于或等于1 e-12的值,然后使用minmax函数查找结果数组的最小值和最大值。
下面是一个如何执行此操作的示例:

import numpy as np

# Define the array A
A = np.array([[9.49108487e-05],
              [1.05634586e-19],
              [5.68676707e-17],
              [1.02453254e-06],
              [2.48792902e-16],
              [1.02453254e-06]])

# Use the where function to select only the values that are greater than or equal to 1e-12
A_filtered = np.where(A >= 1e-12, A, np.nan)

# Use the min and max functions to find the minimum and maximum values
Min = np.min(A_filtered)
Max = np.max(A_filtered)

# Print the results
print(Min, Max)

这将为您提供预期的输出1.02453254e-06 9.49108487e-05.

相关问题