我能用Cython写一个记忆视图吗?

我能用Cython写一个记忆视图吗?,cython,fwrite,typed-memory-views,Cython,Fwrite,Typed Memory Views,是否可以使用cfwrite函数将numpy数组写入磁盘?从Cython Memory View文档中,我了解到“它们可以处理C数组”,但我没有看到这样的明确示例 以下是我正在尝试的: cdef FILE *fptr fptr = fopen("data.dat", "w") cdef double[:] array = numpy.array([.5, 1.5, 2.5, -9, 0.0, 5]) fwrite(array, sizeof(double), array.size, fptr)

是否可以使用c
fwrite
函数将numpy数组写入磁盘?从Cython Memory View文档中,我了解到“它们可以处理C数组”,但我没有看到这样的明确示例

以下是我正在尝试的:

cdef FILE *fptr
fptr = fopen("data.dat", "w")
cdef double[:] array = numpy.array([.5, 1.5, 2.5, -9, 0.0, 5])
fwrite(array, sizeof(double), array.size, fptr)
但我得到以下编译错误:

Error compiling Cython file:
------------------------------------------------------------
...
def write_values(file_path):
    """Tracer code to write values to a C file."""
    cdef FILE *fptr
    fptr = fopen("data.dat", "w")
    cdef double[:] array = numpy.array([.5, 1.5, 2.5, -9, 0.0, 5])
    fwrite(array, sizeof(double), array.size, fptr)
          ^
------------------------------------------------------------

write_with_c.pyx:23:11: Cannot assign type 'double[:]' to 'const void *'
这可能吗?

,您应该传递第一个元素的地址(
double*
应该可以在不强制转换的情况下转换为
const void*
),为了实现强制正确性,您可能需要使用
cdef double[:1]数组
显式声明memoryview,该数组强制执行C-连续内存视图,生产最终产品线:

cdef double[::1] array = numpy.array([.5, 1.5, 2.5, -9, 0.0, 5])
fwrite(&array[0], sizeof(double), array.size, fptr)