Это потому, что numpy по умолчанию сохраняет значение с конечными десятичными знаками:
0 # example
1 1.000000000000000000e+00 2.099999999999999799e-06 3.299999999999999822e+00
2 5.000000000000000000e+00 6.299999999999999822e+00 7.799999999999999642e-03
Так что попробуйте явно посмотреть на это число:
lookup = 2.1e-06
with open(filename) as fh:
# skip header
_ = next(fh)
for i, line in enumerate(fh, start=1):
numbers = list(map(float, line.split()))
if lookup in numbers:
break
print(i)
Или, используя оператор filter
:
lookup = 2.1e-06
with open(filename) as fh:
# skip header
_ = next(fh)
for i, line in enumerate(fh, start=1):
check = next(filter(lookup.__eq__, map(float, line.split())), None)
# check will be None if the iterator is exhausted (no match)
# otherwise, it will stop at the first True
if check is not None:
print(check)
break