【发布时间】:2017-08-29 14:34:02
【问题描述】:
如果坐标之间的欧几里德距离小于 1 并且时间相同,我想比较两个 numpy 数组的元素并删除其中一个数组的元素。 data_CD4 和 data_CD8 是数组。数组的元素是具有 3D 坐标和时间作为第 4 个元素的列表 (numpy.array([[x,y,z,time],[x,y,z,time].....])。是截止,这里是 1。
for i in data_CD8:
for m in data_CD4:
if distance.euclidean(tuple(i[:3]),tuple(m[:3])) < co and i[3]==m[3] :
data_CD8=np.delete(data_CD8, i, 0)
有没有更快的方法来做到这一点?第一个数组有 5000 个元素,第二个有 2000 个元素,所以花了太多时间。
【问题讨论】:
-
应该是
[:3],而不是[3:]。 -
如果你想也可以使用 numpy 进行比较,请查看:stackoverflow.com/questions/10580676/…
-
正如@trincot 指出的,它必须是
distance.euclidean(tuple(i[:3]),tuple(m[:3]))。你能确认一下吗? -
是的!你说的对。我改了。
标签: python arrays performance numpy