使用where选择数组的一部分

时间:2017-08-03 12:20:01

标签: python

我有一维数组。我们称之为grid_pro_x。它显示粒子的位置。它从-100到100微米。我还有另一个1D阵列,Px_pro是粒子的能量。  我想为那些位置超过10微米的粒子提取Px_pro数组。我做了类似的事情

len= len(grid_pro_x)
print len  ,' Number of initial X point'
<<<<320000

grid = np.where(grid_pro_x<10.e-06,0.,grid_pro_x) 
grid = np.extract(grid !=0,grid)
print np.shape(grid),' Number of elements grid'

<<<24000

np.where(grid_pro_x<10.e-6,0.,Px_pro)
Px_pro_new = np.extract(Px_pro !=0,Px_pro)
print np.shape(Px_pro_new),' Number of elements Px_pro-new'
<<<<320000

你可以在最后一行看到而不是24000我有320000.谁能帮助我,我必须做什么?

由于

1 个答案:

答案 0 :(得分:1)

无需使用np.where()

numpy.abs(grid_pro_x) > 10e-6

将为您提供一个布尔数组,用于标记哪些元素符合条件。然后,您可以使用此数组从pro_x

中提取值
pro_x[numpy.abs(grid_pro_x) > 10e-6]
相关问题