Python 一定范围内 NumPy 数组的最小值和最大值

min and max of NumPy arrays in Python within a certain range

我正在从传感器读取数据,它的数据总是随时间变化,它的数据在 0 到 255 之间,如 np.array

我想找到 3 到 250 之间的最小值和最大值。

例如:

import numpy as np
a = np.array([0,1, 2, 10, 20, 100, 251, 255])
d = a.min()
c = a.max()
print (d,c)

输出为:(0, 255)

我想成为 (10, 100)

有时a = np.array([0,1, 3, 10, 20, 100, 249, 255])

我想成为 (3, 249)

拜托,你的帮助。

您可以添加条件,然后检查 minmax

a = np.array([0,1, 2, 10, 20, 100, 251, 255])
print(a[(a>=3) & (a<=250)].min())
print(a[(a>=3) & (a<=250)].max())
10
100

一种方法是:

>>> a
array([0,1, 2, 10, 20, 100, 251, 255])
>>> arr_min = a[(a >= 3) & (a <= 250)].min()
>>> arr_max = a[(a >= 3) & (a <= 250)].max()
>>> (arr_min, arr_max)
(10, 100)

另一个是 scipy.stats.describe:

>>> from scipy.stats import describe
>>> describe(a[(3 <= a) & (a <= 250)]).minmax
(10, 100)

只需使用 numpy:

中现有的函数创建您自己的函数
import numpy as np

def my_min(input, min_, max_):
    m = input.min()

    if m > max_:
        return max_
    elif m < min_:
        return min_
    else:
        return m

def my_max(input, min_, max_):
    m = input.max()

    if m > max_:
        return max_
    elif m < min_:
        return min_
    else:
        return m

l1 = np.array([0, 1, 2, 10, 20, 100, 251, 255])
l2 = np.array([0,1, 3, 10, 20, 100, 249, 255])

print("({}, {})".format(my_min(l1, 10, 100), my_max(l1, 10, 100)))
print("({}, {})".format(my_min(l2, 3, 250), my_max(l2, 3, 250)))

输出:

(10, 100)
(3, 250)

Call the function like my_min(array, min, max)