我有一个对 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\nimport 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)