【发布时间】:2021-10-09 17:04:28
【问题描述】:
我有 np.arange(n) A 和一个 numpy 数组 B 的非相交子数组 - 将初始数组划分为 k 个连续数字数组。
一个例子是:
A = [0, 1, 2, 3, 4, 5, 6]
B = [[0, 1], [2, 3, 4], [5, 6]]
对于 B 的每个子数组 C 我必须计算 A\C (其中 \ 是对集合的操作,因此结果是A 中所有不在 B 中的元素的 numpy 数组)。 我目前的解决方案达到了时间限制:
import numpy as np
for C in B:
ans.append(np.setdiff1d(A, C))
return ans
我想通过使用矢量化来加速它,但我不知道怎么做。我试图移除循环,只留下 setxor1d 和 setdiff1d 之类的函数,但失败了。
【问题讨论】:
-
这与 6 小时前的有什么不同? stackoverflow.com/q/69416426/901925
-
我重写了这篇文章,只包含最小的可重现示例,因为这是评论者的建议之一
标签: python numpy optimization set vectorization