J'ai un tas de tableaux numpy qui contiennent à la fois des nombres positifs et négatifs et je veux trouver le nombre le plus proche de zéro dans chaque tableau pas le plus petit nombre. Je veux aussi conserver les signes des nombres. Exemple ci-dessous:
"Closest to zero for array 1:" -0.2 "Closest to zero for array 2:" -4.7 "Closest to zero for array 3:" 0.3
La sortie idéale serait quelque chose qui me donnerait le nombre le plus proche de zéro, donc pour chaque tableau respectivement, ce serait:
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])
Y a-t-il un moyen de faire cela?
5 Réponses :
Une combinaison de argmin et 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
Un moyen sans numpy ; en utilisant min avec abs:
[ 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
Output:
for arr in [array1, array2, array3]:
print(arr, min(arr, key=abs))
si vous essayez d'obtenir la valeur minimale
np.minimum ([2, 3, 4], [1, 5, 2])
//
np.minimum (np.eye (2), [0.5, 2]) # diffusion
référence: https://numpy.org/doc/stable /reference/generated/numpy.minimum.html
min1=abs(array1[0])
for i in array1:
if(abs(i)<abs(min1)):
min1=i
print("Closest to zero for array 1: "+ str(min1))
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)
changez tous les nombres en positifs, obtenez l'index du min. Sortez cela.
Est-ce que cela répond à votre question? Trouver la valeur la plus proche dans le tableau numpy