numpy阵列矩阵中的布尔掩蔽

2024-10-04 05:25:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下程序

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应该存在,其他值为零

我试过布勒掩蔽如上所示。但我能解决这个问题。请帮忙


Tags: import程序numpyasnprandomprintarr
1条回答
网友
1楼 · 发布于 2024-10-04 05:25:53

我不完全确定你到底想要达到什么,但这就是我所做的过滤

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.        ]])

多亏了user3053452,我又增加了一个解决方案,原来的数据不会改变

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.        ]])

相关问题 更多 >