Установка значений массива для -inf в Python с помощью scipy / numpy - PullRequest
4 голосов
/ 03 декабря 2010

У меня есть массив, который выглядит следующим образом:

a = [ -22  347 4448  294  835 4439  587  326]

Я хочу установить его 0 или меньшие значения в -inf.Я попробовал следующее:

a[where(a <= 0)] = -inf

, когда я делаю это, я получаю ошибку:

OverflowError: cannot convert float infinity to integer

Есть идеи, почему это так и как я могу это исправить?функция where должна возвращать индексы значений, меньших или равных 0, а присваивание должно просто устанавливать эти значения в -inf.спасибо.

Ответы [ 2 ]

10 голосов
/ 03 декабря 2010

Ваш массив a - это массив целых чисел. Целые числа не могут представлять бесконечность - могут только числа с плавающей точкой. Итак, есть исправления:

  1. Вместо этого используйте массив чисел с плавающей запятой.

  2. Используйте большое отрицательное целое значение, например, -2147483648, если вы используете 32-битные целые числа. Конечно, это не то же самое, что -infinity, но в некоторых случаях он ведет себя аналогично.

Кроме того, вы можете просто написать

a[a <= 0] = <somevalue>
2 голосов
/ 03 декабря 2010

Если тип вашего массива целочисленный, вы не сможете установить какие-либо значения на -infinity. Это специальное значение в IEEE с плавающей точкой. Очевидный способ исправить это - использовать массив с плавающей точкой.

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