2024-05-23 16:54:50 发布
网友
我有一个数组:
a=np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9])
我想要的是根据一个阈值将这个向量转换成一个二进制向量。 以threshold=0.5为例,大于0.5的元素转换为1,否则为0。 输出向量应如下所示:
a_output = [0, 0, 0, 1, 1, 1]
我该怎么做?
您可以使用sklearn.preprocessing module中的binarize。
sklearn.preprocessing module
binarize
但是,只有当您希望最终值是二进制值(即“0”或“1”)时,此操作才有效。上面提供的答案也是大量的非二进制结果。
from sklearn.preprocessing import binarize a = np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9]).reshape(1,-1) x = binarize(a) a_output = np.ravel(x) print(a_output) #everything together a_output = np.ravel(binarize(a.reshape(1,-1), 0.5))
np.where
np.where(a > 0.5, 1, 0) # array([0, 0, 0, 1, 1, 1])
astype
(a > .5).astype(int) # array([0, 0, 0, 1, 1, 1])
np.select
np.select([a <= .5, a>.5], [np.zeros_like(a), np.ones_like(a)]) # array([ 0., 0., 0., 1., 1., 1.])
np.round
如果数组值是介于0和1之间的浮动值,并且阈值为0.5,则这是最佳解决方案。
a.round() # array([0., 0., 0., 1., 1., 1.])
您可以使用
sklearn.preprocessing module
中的binarize
。但是,只有当您希望最终值是二进制值(即“0”或“1”)时,此操作才有效。上面提供的答案也是大量的非二进制结果。
np.where
用
astype
np.select
特殊情况:
np.round
如果数组值是介于0和1之间的浮动值,并且阈值为0.5,则这是最佳解决方案。
相关问题 更多 >
编程相关推荐