python – 以并行方式从数组中删除条目

python – 以并行方式从数组中删除条目,第1张

概述我有一个x和y坐标的列表/数组,例如: 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 我有一个x和y坐标的列表/数组,例如:

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 – 以并行方式从数组中删除条目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1194278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存