将带有浮点数的numpy数组转换为二进制数(0或1个整数)

Tho*_*oWe 6 python arrays numpy

我有一个如下所示的输入数组:

  [[  0.    1. ]
   [ 10.    0.4]
   [ 20.    1.4]
   [ 30.    3. ]
   [ 40.    1.1]
   [ 50.    0.7]]
Run Code Online (Sandbox Code Playgroud)

现在我想将浮点值从第二列(数组[:,1]中的那些)转换为单位二进制值,表示为1或0整数.我有阈值,我想用作逻辑0和逻辑1之间的限制.假设它是1.5.转换后,数组应如下所示:

  [[  0.    0 ]
   [ 10.    0]
   [ 20.    0]
   [ 30.    1]
   [ 40.    0]
   [ 50.    0]]
Run Code Online (Sandbox Code Playgroud)

如何以最少的努力做到这一点?

Div*_*kar 5

将第二列与阈值进行比较,该阈值将是一个布尔数组,然后将其分配回第二列.在分配之前,分配会将其向上转换为浮动数据.所得到的第二列仍然是float,但0s1s它需要保持数据类型存在.

因此,简单地做 -

a[:,1] = a[:,1]>1.5
Run Code Online (Sandbox Code Playgroud)

样品运行 -

In [47]: a
Out[47]: 
array([[  0. ,   1. ],
       [ 10. ,   0.4],
       [ 20. ,   1.4],
       [ 30. ,   3. ],
       [ 40. ,   1.1],
       [ 50. ,   0.7]])

In [48]: a[:,1] = a[:,1]>1.5

In [49]: a
Out[49]: 
array([[  0.,   0.],
       [ 10.,   0.],
       [ 20.,   0.],
       [ 30.,   1.],
       [ 40.,   0.],
       [ 50.,   0.]])
Run Code Online (Sandbox Code Playgroud)