更具体地说,有什么区别:
def f(double[::1, :]):
pass
和
def f(np.ndarray[double, ndim=2, order='fortran']):
pass
答案 0 :(得分:2)
第一个是较新的"类型的记忆视图"式:
http://cython.readthedocs.io/en/latest/src/userguide/memoryviews.html
第二种是较旧的缓冲区语法:
http://cython.readthedocs.io/en/latest/src/tutorial/numpy.html#efficient-indexing
请参阅有关类型化内存视图的文档以进行比较,因为它很好地涵盖了差异。
我在文档中提到的一件事是,有时我发现历史上,当将数组传递给不需要花费太多时间来计算的函数时,缓冲区语法可能会快一些。获取内存视图有一点点开销,尽管访问数据时效率更高。我不确定是否仍然如此,但它可能值得为您的特定用例进行基准测试。