根据阈值将NumPy数组转换为二进制向量

fre*_*rog 10 python arrays numpy

我有一个数组如下:

a=np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9])
Run Code Online (Sandbox Code Playgroud)

我想要的是根据阈值将此向量转换为二进制向量.以threshold = 0.5为例,大于0.5的元素转换为1,否则为0.
输出向量应如下所示:

a_output = [0, 0, 0, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点

cs9*_*s95 25

np.where

np.where(a > 0.5, 1, 0)
# array([0, 0, 0, 1, 1, 1])
Run Code Online (Sandbox Code Playgroud)

掩蔽+ astype

(a > .5).astype(int)
# array([0, 0, 0, 1, 1, 1])
Run Code Online (Sandbox Code Playgroud)

np.select

np.select([a <= .5, a>.5], [np.zeros_like(a), np.ones_like(a)])
# array([ 0.,  0.,  0.,  1.,  1.,  1.])
Run Code Online (Sandbox Code Playgroud)