根据条件分配numpy数组

时间:2016-02-08 23:19:59

标签: python numpy

编写这个numpy python代码有什么更好的方法?

age[age < 20.0] = 0.0
age[age > 0.0] = 1.0
mature = age

这里,成熟度包含所有年龄值的1.0&gt; 20.0,否则0.0

1 个答案:

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