Сравните numpy float64 со скалярным выражением в выражении if в python - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть несколько массивов, созданных с помощью numpy генератора случайных чисел, и они имеют тип float64 all_vec - это список numpy массивов

Затем я сравниваю их со значением с плавающей точкой: скажем ,

bucket = 0.3

for vec in all_vectors:
  vec_min = np.amin(vec)
  vec_max = np.amax(vec) 
  if vec_min < bucket:
    bucket1.append(vec)
   <and similarly comparing to other bucket values and adding to an appropriate list>

Итак, я вижу, что bucket является float, а элемент в массиве numpy имеет тип numpy .float64; Я попытался: vec_min.item(), чтобы получить тип float, а также numpy.around(vec_min, decimal=4), чтобы уменьшить точность.

Я также преобразовал скаляр bucket в numpy .float64 как: np.float64(0.3)

, но ни один из приведенных выше вариантов не работает в операторе if. Тем не менее, когда я использую оператор if, использующий значение, например:

if 0.8537153298125766 < 0.3:
   print("false")

, он прекрасно работает.

Я знаю, это звучит как простой вопрос, но я много искал, и большинство примеров пытаются сравнить, равны ли два значения, в этом случае предпочтительнее получить difference между двумя значениями с плавающей запятой.

Пожалуйста, дайте мне знать, как я могу это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...