我有一个numpy数组
a = np.array([[[0.23,0.81],[0.9,0],[1,0.51]], [[0.3,0.75],[0.1,0.2],[1,0.50]]])
要将其舍入为整数,有一个函数numpy.rint。
a_round = np.rint(a)
值大于0.5时向上舍入,值小于0.5时向下舍入。所以我的输出是:
[[[0。 1.] [1。 0.] [1。 1。]]
[[0。 1.] [0。 0.] [1。 0。]]]
问题是,有什么办法可以自定义汇总逻辑?例如,如果我想在该值大于.3时向上取整,而在该值小于0.3时向下取整?
答案 0 :(得分:2)
您可以使用where()
来做到这一点:
>> a = np.array([[[0.23,0.81],[0.9,0],[1,0.51]], [[0.3,0.75],[0.1,0.2],[1,0.50]]])
array([[[0.23, 0.81],
[0.9 , 0. ],
[1. , 0.51]],
[[0.3 , 0.75],
[0.1 , 0.2 ],
[1. , 0.5 ]]])
>> np.rint(a)
array([[[0., 1.],
[1., 0.],
[1., 1.]],
[[0., 1.],
[0., 0.],
[1., 0.]]])
>> np.where(a<0.3, np.floor(a), np.ceil(a))
array([[[0., 1.],
[1., 0.],
[1., 1.]],
[[1., 1.],
[0., 0.],
[1., 1.]]])
答案 1 :(得分:0)
通过将布尔值转换为浮点数,还有一种简单的方法可以对[0,1]范围内的数字进行处理:
>> (a>=0.3).astype(np.float)
array([[[0., 1.],
[1., 0.],
[1., 1.]],
[[1., 1.],
[0., 0.],
[1., 1.]]])