【发布时间】:2018-08-01 23:40:45
【问题描述】:
我正在编写一个具有常见场景的算法。我有两个大型整数数组。称它们为 k 和 j(因为我在测试代码中就是这样称呼它们的)。
我取 k 的每个元素,并将它与 j 的每个元素联合,但仅当两个元素的交集为零时。
例子:
j = np.zeros(3, dtype=int)
k = np.zeros(3, dtype=int)
k[0] = 2
k[1] = 6
k[2] = 10
j[0] = 2
j[1] = 8
j[2] = 1
for i in xrange(3):
mask = (j&k[i] == 0)
nextpart = (j|k[i])[mask]
print i, nextpart
print ""
0 [10 3]
1 [14 7]
2 [11]
问题 1
这种方法真的有效吗?我的算法主要基于这里的这个操作,所以知道最好的方法会产生很大的不同。
问题 2
对于每两个数组,我想将所有结果输出到一个一维数组中。正如我们所看到的,通过上面的方法,我输出到不同的数组。我想我可以使用某种连接方法,但根据我对数组的了解,我也怀疑这可能相对耗时。我可以就如何有效地完成这项工作提出一些建议。
谢谢。
【问题讨论】:
标签: python arrays numpy bitwise-operators array-broadcasting