我有一个大约400,000个值的numpy数组z
。 z
的范围来自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))
上述内容似乎没有给我z1
或z2
在所需范围内(大约z1
应该是一个长度为100,000的数组,其值在0<z<=0.5
范围内!! 我已经尝试使用长度为100左右的简单数组并且它可以工作。
我在这里做错了什么?或者是否有另一种方法将我的阵列分成四个部分?
答案 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)]