繁体   English   中英

在数组中找到最接近零的数字

[英]Find the number closest to zero in an array

我有一堆 numpy arrays 有正数和负数,我想在每个数组中找到最接近零的数字而不是最小的数字。 我还想保留数字的符号。 下面的例子:

array1 = np.array([5, 3.2, -1.2, -0.2, 7])
array2 = np.array([19, -20, -4.7, 6, 9, 42])
array3 = np.array([4, 0.3, -9, 8, 6, 14])

理想的 output 会给我最接近零的数字,因此对于每个数组分别是:

"Closest to zero for array 1:" -0.2

"Closest to zero for array 2:" -4.7

"Closest to zero for array 3:" 0.3

有没有办法做到这一点?

argminabs的组合:

>>> for array in (array1, array2, array3):
...     print(array, array[np.argmin(np.abs(array))])

[ 5.   3.2 -1.2 -0.2  7. ] -0.2
[ 19.  -20.   -4.7   6.    9.   42. ] -4.7
[ 4.   0.3 -9.   8.   6.  14. ] 0.3

一种没有numpy方法; minabs一起使用:

for arr in [array1, array2, array3]:
    print(arr, min(arr, key=abs))

Output:

[ 5.   3.2 -1.2 -0.2  7. ] -0.2
[ 19.  -20.   -4.7   6.    9.   42. ] -4.7
[ 4.   0.3 -9.   8.   6.  14. ] 0.3
min1=abs(array1[0])

for i in array1:
    if(abs(i)<abs(min1)):
        min1=i

print("Closest to zero for array 1: "+ str(min1))

如果您试图获得最小值

np.minimum([2, 3, 4], [1, 5, 2])

//

np.minimum(np.eye(2), [0.5, 2]) # 广播

参考: https://numpy.org/doc/stable/reference/generated/numpy.minimum.html

myList = [4, 1, 88, 44, 3,-1,-7,-19,-0.5,-0.2]

def compute_closest_to_zero(myList):
    positive = []
    negative = []
    if len(myList) == 0:
        print('0')
    else:
        for i in myList:
            if i >= 0:
                positive.append(i)
                #print(positive)
            else:
                negative.append(i)
                #print(negative)
                #print(min(positive))

                
    if min(positive) + max(negative) < 0:
        print(min(positive))
    else:
        print(max(negative))
    return

Blockquote

compute_closest_to_zero(myList)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM