Эта ошибка в основном связана с тем, что NumPy и Python несколько привередливы , когда дело доходит до хранения и, следовательно, сравнения целых чисел с плавающей запятой.
Мы можем видим, что python 0.1
на самом деле:
>>> print('{0:.20f}'.format(0.1))
0.10000000000000000555
, а NumPy 0.1
на самом деле:
>>> import numpy as np
>>> print('{0:.20f}'.format(np.linspace(0.0, 2.9, num=30)[1])) # 0.1 in list
0.09999999999999999167
Поэтому, чтобы правильно сравнить их, Вы можете использовать предоставленные math.isclose () или numpy .isclose () (сравнивает два списка):
import math
# -- snip --
for num in np.linspace(0.0, 2.9, num=30):
if math.isclose(0.1, num):
print('detected!')