我想将列表(或numpy数组)中的值有效地转换为numpy数组:一个负值应该在新数组中变为0,并且a新阵列中的正值a 1。使用numpy.clip将正值和负值转换为位串
例如,
>> import numpy as np
>> np.clip([1,2,3,-1,-2], a_min=0, a_max=1)
array([1, 1, 1, 0, 0])
但是,如果我有花车在列表中,这种方法使他们的是:
>> np.clip([1,0.45,3,-1,-2], a_min=0, a_max=1)
array([ 1. , 0.45, 1. , 0. , 0. ])
是否有规避这种行为的一个好办法吗?一种方法是将数值四舍五入。但我希望所有正数都为1的分配。如果我使用np.around()
,则会使0.45-0> 0。
好的,谢谢! StackOverflow让我可以接受这个答案! – Sebastian 2014-09-23 17:21:51
请注意,如果性能是一个问题,我得到'(a> 0).astype('i1')'比'np.where(a> 0,1,0)'快得多。数组越大,差异越大。对于100长阵列,我得到的速度要快2倍,对于10k长阵列,速度要快10倍。 – 2014-09-23 17:24:33
感谢@RogerFan – Sebastian 2014-09-23 18:36:38