x = [x1,x2,x3,...]y = [y1,y2,y3,...]
现在,我想根据条件删除某些条目,例如,以下内容:
for i in x: if i <= 40 and i >= -40: print "True" else: x.remove(i)for i in y: if i <= 20 and i >=- 20: print "True" else: y.remove(i)
上面的代码从列表中删除了相应的条目,但如果删除x1,y1仍然保留在列表中.我想要实现的是,如果删除x1,也应该删除y1.我该怎么做呢?我的最终目标是尝试绘制x和y,因此我无法做到这一点,因为列表最终会有不同的维度.我也可以用
zeta_List = np.column_stack((x,y))
得到一个像([[[x1,y1],[x2,y2],[x3,y3],…]]这样的数组,但我不知道如何使用if条件从中删除条目.
谢谢.
解决方法 形成一个布尔选择掩码:mask = ~((x > 40) | (x < -40) | (y > 20) | (y < -20))
然后,从掩码为True的x和y中选择值:
x,y = x[mask],y[mask]
当x是NumPy数组时,(x> 40)返回与x相同形状的布尔数组,其中x为x的元素大于40.
注意使用| for bitwise-和~for not(boolean negation).
或者,到De Morgan’s law,您可以使用
mask = ((x <= 40) & (x >= -40) & (y <= 20) & (y >= -20))
NumPy *** 作是按元素执行的.因此,如果x的元素在-40和40之间,并且y的相应元素在-20和20之间,则mask为True.
例如,
import numpy as npx = [-50,-50,30,50]y = [-30,10,40]# change the Lists to NumPy arraysx,y = np.asarray(x),np.asarray(y)# mask = ~((x > 40) | (x < -40) | (y > 20) | (y < -20))mask = ((x <= 40) & (x >= -40) & (y <= 20) & (y >= -20))x,y[mask]
产量
In [35]: xOut[35]: array([30])In [36]: yOut[36]: array([10])
同
In [37]: maskOut[37]: array([False,False,True,False],dtype=bool)总结
以上是内存溢出为你收集整理的python – 以并行方式从数组中删除条目全部内容,希望文章能够帮你解决python – 以并行方式从数组中删除条目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)