编写这个numpy python代码有什么更好的方法?
age[age < 20.0] = 0.0
age[age > 0.0] = 1.0
mature = age
这里,成熟度包含所有年龄值的1.0&gt; 20.0,否则0.0
答案 0 :(得分:4)
mature = age = (age > 20.0).astype(float)
age > 20.0
是一个布尔数组。 astype(float)
将数组转换为float dtype,将True更改为1.0,将False更改为0.0。
请注意,这也会将NaN转换为0.
要像原始代码一样保留NaN,您可以使用np.clip
:
mature = age = np.clip(age-20, 0, 1)
例如,
In [90]: age = np.array([np.nan, 30, 20, 10])
In [91]: (age > 20.0).astype(float)
Out[91]: array([ 0., 1., 0., 0.])
In [92]: np.clip(age-20, 0, 1)
Out[92]: array([ nan, 1., 0., 0.])