Convert NumPy array to 0 or 1 based on threshold

前端 未结 2 945
清歌不尽
清歌不尽 2020-11-29 05:55

I have an array below:

a=np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9])

What I want is to convert this vector to a binary vector based on a thres

相关标签:
2条回答
  • 2020-11-29 06:31

    np.where

    np.where(a > 0.5, 1, 0)
    # array([0, 0, 0, 1, 1, 1])
    

    Boolean basking with 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.])
    

    Special case: np.round

    This is the best solution if your array values are floating values between 0 and 1 and your threshold is 0.5.

    a.round()
    # array([0., 0., 0., 1., 1., 1.])
    
    0 讨论(0)
  • 2020-11-29 06:35

    You could use binarize from the sklearn.preprocessing module.

    However this will work only if you want your final values to be binary i.e. '0' or '1'. The answers provided above are great of non-binary results as well.

    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))
    
    0 讨论(0)
提交回复
热议问题