memoryview相关内容

哪个是更快的np.vSTACK、np.append、np.comatenate,还是用cython编写的手动函数?

我编写了一些程序,在每次迭代中更新numpy列表,并对其执行一些操作。迭代次数取决于时间。例如,在1秒内,可能会有1000到2500次迭代。这意味着对于运行程序1秒,数字列表中的项不会超过2500个。 我实现了一个基本算法,但我不确定它是否是计算bonus的最快方法: import numpy as np cdef int[:, :] pl_list cdef list pl_len ..
发布时间:2022-04-04 13:09:17 Python

什么时候应该使用内存视图?

可以在此处找到 memoryview 的完整说明:> 创建一个引用 obj 的 memoryview.obj 必须支持缓冲协议.支持缓冲协议的内置对象包括bytes 和bytearray. memoryview 具有 element 的概念,它是由原始对象 obj 处理的原子内存单元.对于bytes和bytearray等许多简单类型,一个元素是单个字节,但其他类型如array.array可 ..
发布时间:2021-06-28 19:29:57 Python

有效地初始化Cython Memoryview

我目前正在Cython pyx 文件中设置我的 MemoryView ,如下所示: @ cython.boundscheck(False)cdef int [:] fill_memview():#这发生在一个大循环内,因此需要快速cdef int [:] x = np.empty(10)对于我在范围(10)中:x [i] = i返回xcdef stupid_loop():对于我在范围(1000 ..
发布时间:2021-04-28 18:35:04 Python

Cython布尔numpy数组

我有一个numpy布尔数组: myarr = np.array([[False,True],[True,False]]) 如果我尝试用它初始化Cython MemoryView,如下所示: cdef bint [:,:] mymem = myarr 我收到此错误: ValueError:不了解字符缓冲区dtype格式字符串('?') 如果我改为执行此操作,则效果很好: ..
发布时间:2021-04-28 18:33:48 Python

Python:在单个操作中写入内存

我正在编写一个用于访问Python 3.5中的FPGA寄存器的用户空间驱动程序,该mmap是FPGA的PCI地址空间,获得了memoryview以提供对内存映射寄存器空间的直接访问,然后使用将32位值写入所选的32位对齐地址. def write_u32(address, data): assert address % 4 == 0, "Address must be 32-bit ..
发布时间:2020-11-10 19:23:26 Python

Cython MemoryViews:使用数组参数包装C函数以传递numpy数组

我正在尝试使用Cython用数组参数( quick_sort())包装c函数,因此可以将numpy数组传递给它。我已经在文档,SO和网络中搜索了一个可行的最小示例,但没有找到。我尝试了几种可能性,但没有任何进展,因此请帮助我解决这个问题。这是我的文件: quicksort.c #include void quick_sort(int * a,int n){ ..
发布时间:2020-10-14 20:09:58 Python

Cython:优化本机Python内存视图

我有一个函数(来自外部Python库),该函数返回要在Cython中处理的 memoryview 对象。 有没有一种方法可以将其转换为输入的字节存储视图(无副本)以提高效率?我该怎么办?这不起作用: mv = memoryview(b'1234') cdef char [:] * tmv tmv = mv ^ ------------------------------ ..
发布时间:2020-10-14 19:57:38 Python

Cython“无法获取内存视图切片的地址”

我无法在Cython中创建一个简单的类。很少有文档涉及在C ++包装器中处理数组的内存视图。我想创建一个具有时间,x,y和z属性的数据类。我需要这些属性为数组,最终将在Python中调用它们。我以前使用numpy类型进行此操作,但是我想使用memoryviews正确进行此操作。我的背景在C ++中并不强。目前,我仅尝试使time属性与单元素1D数组一起使用。当我尝试构建扩展程序时,出现以下错误: ..
发布时间:2020-09-25 01:19:35 C/C++开发

为什么无法从数组对象获取Py_buffer?

关于数组的Python文档明确指出数组符合缓冲区接口。它甚至建议不要使用buffer_info()方法。但是,当我尝试使用PyObject_GetBuffer()从C / C ++代码获取Py_Buffer或使用python的memoryview时,就会失败。 例如,在python中(我使用版本2.7): >> a = array.array(’c’) >>> memoryview(a ..
发布时间:2020-09-24 01:16:42 Python

用memoryview读取二进制文件

我在下面的代码中读取了一个大文件,该文件具有特殊的结构-其中两个文件需要同时处理.我没有在文件中来回搜索,而是加载了包裹在memoryview调用 中的这两个块 with open(abs_path, 'rb') as bsa_file: # ... # load the file record block to parse later file_records_blo ..
发布时间:2020-09-20 23:36:11 Python

Cython输入的memoryviews:它们实际上是什么?

Cython 文档很好地解释了它们所允许的内容,以及如何声明它们,以及如何使用它们. 但是,我仍然不清楚它们到底是什么.例如,像这样的numpy数组中的一个简单赋值: my_arr = np.empty(10, np.int32) cdef int [:] new_arr = my_arr 可以使my_arr的访问/分配更快. 幕后发生了什么事? Numpy应该已经以连续的方 ..
发布时间:2020-09-07 06:09:30 Python

如何在Cython中的新型缓冲区对象中包装C指针和长度?

我正在用Cython编写Python 2.7扩展模块. 我如何创建一个实现新式缓冲区接口的Python对象,该接口包装由C库提供给我的内存块?多维数组.我给了一个const void *指针和一个长度,以及一些有关指针保持有效时间的详细信息. 我无法复制内存,这会降低应用程序的性能. 使用旧样式的缓冲区对象,我可以简单地使用PyBuffer_FromMemory(),但是我似乎找不到找 ..
发布时间:2020-07-04 22:09:28 Python

numpy set数组内存

我对numpys内存视图有疑问: 假设我们有两个带有内存的数组: import numpy as np import gc x = np.arange(4*3).reshape(4,3).astype(float) y = (np.arange(5) - 5).astype(float) y_ref = y 我们在框架中使用这些(x,y),因此我们不能仅仅重新定义它们,因为用户可能 ..
发布时间:2020-05-18 21:40:18 Python

将Numpy数组复制到memoryview

我在numpy数组上有一个memoryview,并希望使用此memoryview将另一个numpy数组的内容复制到其中: import numpy as np cimport numpy as np cdef double[:,::1] test = np.array([[0,1],[2,3]], dtype=np.double) test[...] = np.array([[4,5], ..
发布时间:2020-05-18 21:08:59 Python

Cython:创建没有NumPy数组的memoryview吗?

由于我发现内存视图方便且快速,因此我尝试避免在cython中创建NumPy数组,并使用给定数组的视图.但是,有时无法避免的是,不更改现有阵列而是创建一个新阵列.在上层函数中,这不是很明显,但是在通常称为子例程中,它是明显的.考虑以下功能 #@cython.profile(False) @cython.boundscheck(False) @cython.wraparound(False) @ ..
发布时间:2020-05-18 20:41:52 Python