从内存地址构造数组

时间:2017-09-27 14:43:26

标签: python numpy

我已经完成了这个函数,它使用ctypes创建一个带有指向指定地址的缓冲区协议的对象:

import numpy as np

def np_buffer_from_address(shape, dtype, address):
    import ctypes
    return np.ndarray(shape, dtype = dtype, buffer = ctypes.c_void_p.from_address(address))

但我想知道我是否可以在不使用ctypes的情况下完成此操作。如果你可以直接使用numpy

1 个答案:

答案 0 :(得分:2)

您可以仅使用标准化的__array_interface__来避免使用ctypes,以下是一个示例:Creating a NumPy array directly from __array_interface__  (事实上​​,numpy.ctypeslib.as_array在幕后做同样的事情,适当地设置typestr和数据)