Разделить массив Numpy на скаляр, где элемент массива ниже определенного значения - PullRequest
0 голосов
/ 13 января 2020

У меня есть массив numpy, например

[[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]]

Теперь я хочу разделить каждый элемент, который меньше 5 на 2. Результат должен быть

[[0.5, 1, 1.5],
 [2, 5, 6],
 [7, 8, 9]]

Как я могу сделать это?

Ответы [ 4 ]

4 голосов
/ 13 января 2020

Использование numpy.where:

np.where(arr<5, arr/2, arr)

Вывод:

array([[0.5, 1. , 1.5],
       [2. , 5. , 6. ],
       [7. , 8. , 9. ]])
1 голос
/ 13 января 2020

Вот что вы могли бы сделать

x[x<5] = x[x<5]/2
1 голос
/ 13 января 2020

Вы можете сделать это путем логического индексирования:

>>> import numpy as np
>>> x = np.array([[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]], dtype = float)
>>> x[x<5] = x[x<5]/2
>>> x
array([[0.5, 1. , 1.5],
       [2. , 5. , 6. ],
       [7. , 8. , 9. ]])
0 голосов
/ 13 января 2020
numpy.where

Например, если ваш массив называется np_array

numpy.where(np_array >=5, np_array, np_array/2)

См. Документацию здесь

...