cutoffs
- это список. Числа, которые вы извлекаете из d
, превращаются в float
и применяются с использованием numpy.vectorize
. (На самом деле это довольно странно - похоже, что сначала он пытается использовать пустые числа с плавающей точкой, которые работают так, как вы хотите, затем он пытается использовать обычные операции с плавающей точкой Python.) При использовании довольно странного и глупого поведения в Python операции с плавающей точкой всегда меньше списков, поэтому вместо получения
>>> # Here is a vectorized array operation, like you get from numpy. It won't
>>> # happen if you just use a float and a list.
>>> 2.0 > [0.0, 1.8, 3.6, 5.4, 7.2]
[True, True, False, False, False] # not real
вы получите
>>> # This is an actual copy-paste from a Python interpreter
>>> 2.0 > [0.0, 1.8, 3.6, 5.4, 7.2]
False
Чтобы решить эту проблему, вы можете сделать cutoffs
массивом numpy вместо list
. (Возможно, вы могли бы также полностью перевести сравнение в пустые операции, вместо того, чтобы имитировать его с помощью numpy.vectorize
, но я не знаю, что это было не по порядку.)