【发布时间】:2015-03-01 05:30:08
【问题描述】:
我有一个形状为(N,k) 的a 数组和另一个形状为(N,) 的数组b。我想检查b 中的ith 值是否包含在a[i] 中。如果它不存在,我想用b[i] 替换a[i,k]。一个例子:
a = np.array([[1, 2, 2, 3, 4, 5],
[1, 2, 3, 3, 4, 5],
[1, 2, 3, 4, 4, 5],
[1, 2, 3, 4, 5, 5],
[1, 2, 3, 4, 5, 6]])
b = np.array([1,7,3,8,9])
输出数组应如下所示:
np.array([[1, 2, 2, 3, 4, 5],
[1, 2, 3, 3, 4, 7],
[1, 2, 3, 4, 4, 5],
[1, 2, 3, 4, 5, 8],
[1, 2, 3, 4, 5, 9]])
在N 上编写循环似乎效率很低。在我的数据集中,N 通常约为 1000 万,而 k 约为 50 到 100。有没有一种有效的方法可以使用 numpy 函数对其进行矢量化?
【问题讨论】:
-
您是否尝试过直接的蛮力方法?需要多长时间?
-
你别无选择,你必须以任何方式循环N
-
来自
C++背景,我第一次解决问题是循环,但我一直发现有更多“Pythonic”方法可以实现我想要的......蛮力大约需要 10 到我的数据 15 分钟。我希望内部 numpy 代码可以处理循环N。
标签: python arrays algorithm numpy