Python 在Cython中使用prange选择性地复制Ndaray行
我有一个关于我用Cython编写的一个相对简单的操作的问题,我想将其并行化,但我没有找到任何文档或问题,似乎指向了正确的方向 简单地说,我想根据条件将一个数组的子集复制到另一个数组中 我有一个很大的点矩阵,对于每个点,我想检查它是否在一个中心点的某个距离内,如果是的话,把它复制到我的结果矩阵中。out_点已分配到与输入区段_点相同的大小,因此我知道它将适合。所有变量都被视为整数和整数Python 在Cython中使用prange选择性地复制Ndaray行,python,numpy,parallel-processing,cython,Python,Numpy,Parallel Processing,Cython,我有一个关于我用Cython编写的一个相对简单的操作的问题,我想将其并行化,但我没有找到任何文档或问题,似乎指向了正确的方向 简单地说,我想根据条件将一个数组的子集复制到另一个数组中 我有一个很大的点矩阵,对于每个点,我想检查它是否在一个中心点的某个距离内,如果是的话,把它复制到我的结果矩阵中。out_点已分配到与输入区段_点相同的大小,因此我知道它将适合。所有变量都被视为整数和整数 for pp in range(extent_points.shape[0]): meets_condi
for pp in range(extent_points.shape[0]):
meets_condition = 1
for ii in range(extent_points.shape[1]): # check if in bounds
if extent_points[pp,ii] < (epicenter[ii] - radius) or \
extent_points[pp,ii] > (epicenter[ii] + radius):
meets_condition = 0; break
if meets-condition == 1: # if in bounds, then copy to output matrix
for ii in range(extent_points.shape[1]):
out_points[out_count,ii] = extent_points[pp,ii]
out_count += 1
return out_points[:out_count, :]
在我的许多点上并行检查这个条件似乎应该是令人尴尬的并行,但我不清楚如何并行复制。如果不应该复制,我是否应该在输入上标记一列,然后再次迭代并复制?除了简短的Cython用户指南和?关于如何使用指针为每个进程分配数组区域的示例之外,还有更多的prange文档吗?它可能对您的情况有所帮助。。。