什么是2.x中Py_buffer的“多维数组”用法?

时间:2013-11-27 02:01:19

标签: python cpython pep3118 pybuffer

http://docs.python.org/2/c-api/buffer.html

  

int ndim

     

内存表示为多维数组的维数。如果为0,则strides和suboffsets必须为NULL。

真实世界的用法是什么?它是否用于散布收集向量缓冲区?

1 个答案:

答案 0 :(得分:3)

使用ndimshape主要用于多维固定形状数组。例如,如果您想从头开始构建类似NumPy的内容,则可以围绕缓冲区API构建它。 NumPy,PIL以及包装典型C和Fortran阵列处理库的模块也有很多变化。

如果您进一步阅读,接下来的两个值都会显示“请参阅complex arrays以获取更多信息。”如果你点击该链接,它会给你一个像NumPy这样做的例子,并描述它是如何工作的。

另请参阅PEP 3118了解一些理由。

(主要)用于锯齿状数组,例如分散/聚集使用。虽然可以使用PIL样式的子偏移,但通常使用缓冲区列表或数组通常更简单(当然,除非您尝试与PIL接口)。

(旧式缓冲区API 支持专为分散/聚集式使用而设计的模式,但它在Python 3.x中被删除,并且在3之后被弃用在2.6+中。 x API被反向移植,主要是因为没有人使用它。)