создать массив, удалив бесконечность - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно создать массив с NumPy в Python со следующими условиями.

distances = np.array ([0, .3,4])

def _distance_weights(self, distances):
    return np.array([(1/y,y) for d, y in np.ndenumerate(distances)])

это дает мне результат:

 [[inf 0.]
 [3.33333333 0.3]
 [0.25 4.]]

Я не знаю, как это сделать, чтобы, когда оно бесконечно, я не выполнял эту функцию. Я должен дать следующий результат

 [[1 0.]
 [3.33333333 0.3]
 [0.25 4.]]

Спасибо и извините за мой английский

1 Ответ

0 голосов
/ 29 апреля 2019

Вы можете изменить код в источнике бесконечности, чтобы он никогда не был добавлен в ваш список:

distances = np.array ([0, .3,4])

def _distance_weights(self, distances):
    return np.array([(1 if y == 0 else 1/y,y) for d, y in np.ndenumerate(distances)])

Если вы никогда раньше не видели такой синтаксис if, воткак это работает: 1 if y == 0 else 1/y будет оцениваться до 1, если y == 0, в противном случае он будет оцениваться до 1/y.

Является ли 1 лучшим выбором для замены на infinity?Я бы, наверное, сам использовал -1, тем более что я не думаю, что ваши расстояния никогда не будут отрицательными.

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