小编iR0*_*Nic的帖子

Numba - 如何并行填充 2D 数组

我有一个对 float64(x,y) 上的二维矩阵进行操作的函数。基本概念:对于每个行组合(行数选择2),计算减法后正值的数量(行1 - 行2)。在 int64(y,y) 的 2Dmatrix 中,如果值高于某个阈值,则将该值存储在索引 [row1,row2] 中;如果低于某个阈值,则将该值存储在索引 [row2,row1] 中。

\n\n

我已经实现了它并用 @njit(parallel=False) 装饰它,效果很好 @njit(parallel=True) 似乎没有加速。为了加快整个过程,我查看了@guvectorize,这也很有效。但是,在这种情况下,我也无法弄清楚如何将 @guvectorize 与并行 true 一起使用。

\n\n

我查看了numba guvectorize target='parallel' 比 target='cpu' 慢,其中解决方案是使用 @vecorize 代替,但我无法将解决方案转移到我的问题,因此我现在正在寻求帮助:)

\n\n

基本的抖动和向量化实现

\n\n
import numpy as np\nfrom numba import jit, guvectorize, prange\nimport timeit\n\n@jit(parallel=False)\ndef check_pairs_sg(raw_data):\n    # 2D array to be filled\n    result = np.full((len(raw_data), len(raw_data)), -1)\n\n    # Iterate over all possible gene combinations\n    for r1 in range(0, len(raw_data)):\n        for r2 in range(r1+1, len(raw_data)):\n            diff = np.subtract(raw_data[:, r1], …
Run Code Online (Sandbox Code Playgroud)

python vectorization numba

4
推荐指数
1
解决办法
4831
查看次数

标签 统计

numba ×1

python ×1

vectorization ×1