[英]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
有没有办法做到这一点?
argmin
和abs
的组合:
>>> 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
方法; 将min
与abs
一起使用:
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.