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

时间:2017-01-16 08:36:10

标签: python arrays numpy

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

  [[  0.    1. ]
   [ 10.    0.4]
   [ 20.    1.4]
   [ 30.    3. ]
   [ 40.    1.1]
   [ 50.    0.7]]

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

  [[  0.    0 ]
   [ 10.    0]
   [ 20.    0]
   [ 30.    1]
   [ 40.    0]
   [ 50.    0]]

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

1 个答案:

答案 0 :(得分:5)

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

因此,只需做 -

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

示例运行 -

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