127得票6回答
Python中的memoryview到底有什么作用?

查看关于memoryview的文档: memoryview对象允许Python代码在不复制的情况下访问支持缓冲区协议的对象的内部数据。 class memoryview(obj) 创建一个引用obj的memoryview。 obj必须支持缓冲区协议。 支持缓冲区协议的...

43得票4回答
使用MemoryView时,Cython Numpy警告NPY_NO_DEPRECATED_API。

我正在将一个Cython内存视图转换为NumPy数组(以便在纯Python代码中使用):from libc.stdlib cimport realloc cimport numpy as np DTYPE = np.float64 ctypedef np.float64_t DTYPE_t ...

38得票2回答
何时应使用memoryview?

完整的memoryview描述可以在此处找到: 创建一个引用obj的memoryview。 obj必须支持缓冲区协议。 支持缓冲区协议的内置对象包括bytes和bytearray。 memoryview具有元素的概念,它是由原始对象obj处理的原子内存单元。 对于许多简单类型,如bytes和...

27得票1回答
Cython类型化内存视图:它们究竟是什么?

Cython的文档很好地解释了内存视图的作用、如何声明和使用。然而,它们到底是什么还不是很清楚。例如,从一个NumPy数组进行简单赋值操作:my_arr = np.empty(10, np.int32) cdef int [:] new_arr = my_arr 使用内存视图可以加快对my_a...

27得票1回答
Cython:将内存视图转换为NumPy数组

如何在Cython中将一个内存视图(memoryview)转换为NumPy数组?文档中有相关内容。cimport numpy as np import numpy as np numpy_array = np.asarray(<np.int32_t[:10, :10]> my_p...

21得票3回答
Cython: 缓冲区类型不匹配,期望为 'int' 但实际得到的是 'long'。

我在尝试将这个整数的memoryview传递给这个(相当琐碎的)函数时遇到了问题。Python 给了我这个错误:ValueError: Buffer dtype mismatch, expected 'int' but got 'long' 有人能帮我理解一下发生了什么吗?在stackover...

19得票1回答
为什么创建这个memoryview只有在赋值给变量时才会引发ValueError?

Python的memoryview不支持datetime64或timedelta。但是当我尝试创建一个包含datetime64或timedelta的结构化数组的memoryview时,它似乎可以工作……除非我将其赋值给变量! In [19]: memoryview(zeros(10, dty...

15得票1回答
Cython内存视图作为返回值

考虑这个虚拟的Cython代码:#!python #cython: boundscheck=False #cython: wraparound=False #cython: initializedcheck=False #cython: cdivision=True #cython: none...

14得票2回答
如何使用Cython类型化内存视图从Python接受字符串?

如何编写一个Cython函数,以typed memoryview的形式接受一个字节串对象(普通字符串、bytearray或遵循buffer protocol的其他对象)? 根据Unicode and Passing Strings Cython教程页面的说明,以下代码应该可以实现: cpd...

12得票4回答
Cython:如何在没有NumPy数组的情况下创建memoryview?

我发现memory-views很方便和快速,因此在Cython中尽量避免创建NumPy数组,并使用给定数组的视图进行操作。然而,有时候不得不创建新的数组而不是修改现有数组。在高层函数中这并不明显,但在经常调用的子程序中就会有所体现。请考虑以下函数:#@cython.profile(False)...