我有一个如下所示的输入数组:
[[ 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]]
如何以最少的努力做到这一点?
答案 0 :(得分:5)
将第二列与阈值进行比较,该阈值将是一个布尔数组,然后将其分配回第二列。在分配之前,分配会将其向上转换为浮动数据。得到的第二列仍然是float
,但是0s
和1s
,因为它需要在那里维护数据类型。
因此,只需做 -
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.]])