У меня есть несколько массивов, созданных с помощью 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
между двумя значениями с плавающей запятой.
Пожалуйста, дайте мне знать, как я могу это исправить.