特定范围内的Numpy数组

时间:2014-07-16 09:59:10

标签: python arrays numpy range

我有一个大约400,000个值的numpy数组zz的范围来自0 to 2.9

我想把这个数组分为四个部分:

z1 = 0.0<z<=0.5
z2 = 0.5<z<=1.0
z3 = 1.0<z<=1.5
z4 = 1.5<z<=2.9

我一直在使用:

z1 = np.where(np.logical_and(z>0, z<=0.5))
z2 = np.where(np.logical_and(z>0.5, z<=1.0)) 

上述内容似乎没有给我z1z2在所需范围内(大约z1应该是一个长度为100,000的数组,其值在0<z<=0.5范围内!! 我已经尝试使用长度为100左右的简单数组并且它可以工作。

我在这里做错了什么?或者是否有另一种方法将我的阵列分成四个部分?

1 个答案:

答案 0 :(得分:0)

问题是np.where()返回索引。要获得您可以执行的值:

z1 = np.take(z, np.where(np.logical_and(z>0, z<=0.5))[0])

依此类推......

直接使用掩码通过花式索引获取值可能更快:

z1 = z[np.logical_and(z>0, z<=0.5)]