маскирование bool в матрицах массивов - PullRequest
0 голосов
/ 13 мая 2019

У меня есть следующая программа

import numpy as np

arr = np.random.randn(3,4)
print(arr)

regArr = (arr > 0.8)
print (regArr)
print (arr[ regArr].reshape(arr.shape))

выход:

[[ 0.37182134  1.4807685   0.11094223  0.34548185]
 [ 0.14857641 -0.9159358  -0.37933393 -0.73946522]
 [ 1.01842304 -0.06714827 -1.22557205  0.45600827]]

Я ищу вывод в arr, где должны существовать значения больше 0,8, а другие значения равны нулю.

Я пробовал маскировать bool, как показано выше. Но я могу справиться с этим. Пожалуйста, помогите

1 Ответ

1 голос
/ 13 мая 2019

Я не совсем уверен, чего именно вы хотите добиться, но это то, что я сделал для фильтрации.

arr = np.random.randn(3,4)
array([[-0.04790508, -0.71700005,  0.23204224, -0.36354634],
       [ 0.48578236,  0.57983561,  0.79647091, -1.04972601],
       [ 1.15067885,  0.98622772, -0.7004639 , -1.28243462]])

arr[arr < 0.8] = 0
array([[0.        , 0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        ],
       [1.15067885, 0.98622772, 0.        , 0.        ]])

Благодаря пользователю 3053452 я добавил еще одно решение, которого исходные данные не будутбыть изменены.

arr = np.random.randn(3,4)
array([[ 0.4297907 ,  0.38100702,  0.30358291, -0.71137138],
       [ 1.15180635, -1.21251676,  0.04333404,  1.81045931],
       [ 0.17521058, -1.55604971,  1.1607159 ,  0.23133528]])

new_arr = np.where(arr < 0.8, 0, arr)
array([[0.        , 0.        , 0.        , 0.        ],
       [1.15180635, 0.        , 0.        , 1.81045931],
       [0.        , 0.        , 1.1607159 , 0.        ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...