【发布时间】:2017-02-09 11:06:10
【问题描述】:
我有两个数组(data 和 final),我想比较两个数组并返回(out)data 中不在final 中的元素
数据:
x y z
10.2 15.2 25.2
15.2 17.2 40.2
12.2 13.2 5.2
14.2 14.2 34.2
12.2 12.2 56.2
13.2 17.2 32.2
11.2 13.2 21.2
最终:
x y z
15.2 17.2 40.2
14.2 14.2 34.2
12.2 12.2 56.2
出来:
x y z
10.2 15.2 25.2
12.2 13.2 5.2
13.2 17.2 32.2
11.2 13.2 21.2
这就是我所做的,
out = [np.column_stack(data[k]) for k in range(len(data)) if data[k] not in final]
out = np.vstack(out)
问题
我遇到的问题是,我必须执行此操作以获取我的out 大约 10000 次(该示例只是万分之一),因此速度是我主要关心的问题。
有没有一种有效的方法来执行此操作?
【问题讨论】:
-
@Divakar,np.ravel_multi_index 适用于整数。如果我的数据是 float64 类型怎么办
-
在你的实际情况下你有多少列?
-
@Divakar,
final和data都有 3 列 -
尝试使用 set() 及其微分函数
-
是否保证最终的所有行都在数据中?
标签: python performance python-3.x numpy vectorization