Как округлить указанный c выбор чисел в массиве numpy? - PullRequest
2 голосов
/ 01 апреля 2020

Из списка случайных numpy я хочу округлить только те числа, которые есть в индексе padInputs. Следующий код - это то, что я пытаюсь, но не работает. Какой обходной путь?

padInputs = [0, 2, 7, 8]
random = np.random.rand(13)
for padInput in padInputs:
    np.around(random[padInput])

Например,

Input
[0.87720789, 0.88194004, 0.06039337, 0.13874861, 0.85552875]

Output
[0.87720789, 1, 0, 0.13874861, 0.85552875]

Ответы [ 3 ]

2 голосов
/ 01 апреля 2020

Попробуйте следующим образом:

random[padInputs] = np.around(random[padInputs])

Обратите внимание, что это будет округлять без десятичных знаков, вы можете передать его в качестве аргумента для округления следующим образом:

random[padInputs] = np.around(random[padInputs], decimals=2)
0 голосов
/ 01 апреля 2020

Проблема в вашем коде в том, что вы должны присвоить результат обратно массиву, так как np.around не находится в функции памяти. как

for padInput in padInputs:
    random[padInput] = np.around(random[padInput])

random
array([1.        , 0.53206402, 1.        , 0.18129529, 0.71238687,
       0.92995779, 0.21934659, 0.        , 1.        , 0.26042076,
       0.76826639, 0.82750894, 0.35687544])

, но его следует заменить одной строкой, как @Bruno определяет в своем ответе.

0 голосов
/ 01 апреля 2020

Следующий однострочный код может заменить ваш для l oop и делает именно то, что вы хотите

np.put(random, padInputs, np.around(random))

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