我有一个缓冲区、数据类型、形状和步幅。我想创建一个Numpy ndarray,它可以重用缓冲区的内存。
有一个
有一个
那么,
有一个
numpy.frombuffer
,它可以从缓冲区创建一个一维数组并重用内存。然而,我不确定是否可以轻松安全地调整其形状和设置步幅。有一个
numpy.ndarray
构造函数可以引用一个缓冲区,但我不确定它是否会重用内存还是复制它(文档中没有明确说明)。那么,
numpy.ndarray
构造函数会实现我的需求吗?还是有其他替代方法?
好的,我现在正在尝试弄清楚numpy.ndarray
构造函数究竟在做什么。代码在这里。它使用PyArray_BufferConverter
来转换缓冲区参数。然后它会调用PyArray_NewFromDescr_int
,可以在这里看到。如果数据传入其中,它将fa->flags &= ~NPY_ARRAY_OWNDATA;
。
lib/stride_tricks
文件。as_strided
是一个方便的工具,可以创建具有特定形状和步幅的视图。但要注意,使用你的视图的numpy代码可能最终会复制它。 - hpauljnumpy.frombuffer
,这将是一个视图)。你应该把它作为答案发布。 - Albert