Заменить значение массива numpy на бесконечность - PullRequest
0 голосов
/ 18 октября 2019

Предположим, у меня есть следующий массив NumPy:

import numpy as np
from numpy import inf

x = np.array([1,2,3,4])

И я хочу заменить j-й индекс этого массива на бесконечность, например,

x[2] = inf

Есть ли способдостижения этого? Потому что, когда я пытаюсь это сделать, я получаю следующую ошибку:

OverflowError: cannot convert float infinity to integer

Спасибо, что ответили!

Ответы [ 4 ]

1 голос
/ 18 октября 2019

1. Вы можете преобразовать ваш массив в тип с плавающей точкой.

x = np.array([0,1,2], dtype=np.float32)

Затем вы можете присвоить бесконечное число, используя np.inf

2. Вы также можете установить в качестве максимального числа бесконечности целое число.

ii16 = np.iinfo(np.int16)
x[2] = ii16.max

Во втором подходе вы должны указать, какой из ингеров вы используете в своем коде.

1 голос
/ 18 октября 2019

при объявлении массива объявите его следующим образом: np.array([1, 2, 3], dtype='f'), inf в numpy имеет тип float .

1 голос
/ 18 октября 2019

Проблема в том, что вы используете массив 'int'.

Определяя массив как

 x = np.array([1.0,2.0,3.0,4.0])

Или:

 x = np.array([1,2,3,4], dtype='f')

Вы выиграли 'у него нет проблем, чтобы сделать это правильно.

Внутренне, 'inf' является константой с плавающей точкой, и она не поддерживает тип int.

np.iinfo(np.int32).max  # ---- 2147483647

np.iinfo(np.int32).min  # ---- -2147483648

np.iinfo(np.int64).max  # ---- 9223372036854775807

np.iinfo(np.int64).min  # ---- -9223372036854775808
1 голос
/ 18 октября 2019

конвертируйте ваш массив в float, используя параметр dtype в конструкторе или используя arr.astype(np.float32) перед назначением inf, как показано ниже

import numpy as np
from numpy import inf

x = np.array([1,2,3,4], dtype=np.float32)
x[2] = inf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...