python—如何在cython中将2d numpy数组转换为指针数组,而不使用MemoryView

r1zk6ea1  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(275)

对我的一维数组使用MemoryView似乎比使用原始指针慢得多。有没有一种简单的方法可以将多维numpy数组(或memoryview)转换为指针数组?
这是我为1d阵列所做的:

cdef np.ndarray[dtype=double, ndim=1] a1
cdef double* a2 = &a1[0]

我需要一个3d阵列:

cdef np.ndarray[dtype=double, ndim=3] b1
cdef double***b2 = <something here>

显然,我可以展平3d阵列并计算必要的一维索引。
我也可以手动填充 double***b2 阵列:

b2 = <double***> malloc(len(b1) * sizeof(double**))
    for i, a in enumerate(b1):
        b2[i] = <double**> malloc(len(a) * sizeof(double*))
        for j, b in enumerate(a):
            b2[i][j] = <double *> malloc(len(b) * sizeof(double))
            for k, c in enumerate(b):
                b2[i][j][k] = c

但有没有更好的内置方法来实现这一点?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题