繁体   English   中英

如何将numpy ndarrays列表作为向量传递给cython

[英]How to pass a list of numpy ndarrays as a vector to cython

如何将numpy ndarray列表传递给cython? 假设列表l (下面定义)的所有元素都是2d float数组,但它们可能有不同数量的行和列,所以我不能将它们全部堆叠成一个numpy数组。

l = [np.zeros(i, 2 * i) for i in [5, 6, 7]]

我能够通过使用vector[np.int_t]作为函数的参数将整数列表传递给cython,但是我没有成功通过使用vector[np.ndarray]vector[np.ndarray[np.float_t, ndim=2]] vector[np.ndarray]传递ndarrays列表vector[np.ndarray[np.float_t, ndim=2]]

正如@hpaulj所指出的,您可以将列表作为声明的输入参数传递,然后声明一个“接收”列表中每个元素的缓冲区。 通过这种方式,您可以以最大效率迭代列表和数组。 这可以编码为:

def test(list list_of_2darrays):
    cdef np.ndarray[ndim=2, dtype=np.float64_t] buff2d # check your dtype
    cdef int i, j

    for buff2d in list_of_2darrays:
        for i in range(buff2d.shape[0]):
            for j in range(buff2d.shape[1]):
                buff2d[i, j] += i + j      

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM