首页 文章
  • 1 votes
     answers
     views

    在cython中更简洁的内存视图矩阵

    我在做什么 我有很多小矩阵(3x3,5x5,3x4等),其大小在编译时是已知的 . 直到现在我用numpy来创造这些 A = np.zeros((3,5)) 并使用numpy数组,就好像它是一个内存视图 . 现在,我想摆脱这些numpy调用,而是使用C数组(或类似的快速动态分配的东西) . 我做了以下事情: cdef double[3][5] A_c cdef double[:,:] A = A...
  • 13 votes
     answers
     views

    Cython类型的记忆观点:它们到底是什么?

    Cython documentation很好地解释了它们允许的内容,如何声明它们以及如何使用它们 . 但是,我仍然不清楚他们到底是什么 . 例如,来自numpy数组的简单赋值如下: my_arr = np.empty(10, np.int32) cdef int [:] new_arr = my_arr 可以更快地访问/分配 my_arr . 幕后发生了什么? Numpy应该已经以连续的方式在...
  • 1 votes
     answers
     views

    numpy.asarray因cython memoryview而失败

    我使用numpy.asarray和一个我无法解释的memoryview对象遇到了一些奇怪的行为 . 这是一个在jupyter笔记本中使用cython magic的简短示例 - 我只是创建一个需要两个struct数组缓冲区并返回它们的函数 . 一个有两个int,另一个有long和int: cdef struct S1: int iGroup int iOrder cdef stru...
  • 1 votes
     answers
     views

    Cython中的内存视图数组

    在我之前的问题回答this回答的基础上,我想制作一些记忆视图 . 问题1 使用固定长度构建具有固定长度的2D存储器视图阵列,例如 mv1 = memoryview(b'1234') mv2 = memoryview(b'abcd') cdef const unsigned char[:,:] tmv = (mv1, mv2) 有了这个我得到: TypeError: a bytes-like ob...
  • 4 votes
     answers
     views

    cython memoryview比预期慢

    我已经开始在cython中使用memoryviews来访问numpy数组 . 他们拥有的各种优势之一是它们比旧的numpy缓冲支持快得多:http://docs.cython.org/src/userguide/memoryviews.html#comparison-to-the-old-buffer-support 但是,我有一个例子,旧的numpy缓冲支持比memoryviews快!怎么会这样...
  • 11 votes
     answers
     views

    Cython Memoryview作为返回值

    考虑这个虚拟的Cython代码: #!python #cython: boundscheck=False #cython: wraparound=False #cython: initializedcheck=False #cython: cdivision=True #cython: nonecheck=False import numpy as np # iterator function...
  • 2 votes
     answers
     views

    cython:与mingw构建错误的memoryview

    我一直在用cython编写一些python扩展模块 . 我写的扩展构建并运行良好 . 然后,我想在访问我的numpy数组时使用类型化的内存视图,因为它们似乎有几个优点http://docs.cython.org/src/userguide/memoryviews.html 但是,只要我在我的cython代码中使用memoryview,我就会在构建扩展时出错 . 例如,如果我添加此测试行: cdef...
  • 2 votes
     answers
     views

    为什么不能腌制cython内存视图?

    我有一个使用memoryview数组的cython模块,就是...... double[:,:] foo 我想使用多处理并行运行此模块 . 但是我得到错误: PicklingError: Can't pickle <type 'tile_class._memoryviewslice'>: attribute lookup tile_class._memoryviewslice fai...
  • 15 votes
     answers
     views

    Cython:将内存视图转换为NumPy数组

    如何在cython中将类型化的内存视图转换为NumPy数组?文档有 cimport numpy as np import numpy as np numpy_array = np.asarray(<np.int32_t[:10, :10]> my_pointer) 我把它当作我的情况 np.asarray(<np.float_t[:, :]> my_memview) ...
  • 8 votes
     answers
     views

    Cython:在没有NumPy数组的情况下创建内存视图?

    由于我发现内存视图方便快捷,我尝试避免在cython中创建NumPy数组并使用给定数组的视图 . 但是,有时无法避免,不能改变现有阵列而是创建新阵列 . 在上层函数中,这是不明显的,但在经常被称为子例程的情况下 . 考虑以下功能 #@cython.profile(False) @cython.boundscheck(False) @cython.wraparound(False) @cython....
  • 1 votes
     answers
     views

    将cython中的numpy数据分配给视图

    我试图将linalg反函数(la.inv)的输出分配给cython中的视图 . 不幸的是,这不起作用 . 我总是可以将la.inv()的输出分配给临时的ndarray对象,然后将其内容复制到视图中 . 有没有更好的方法来做到这一点 . cpdef int testfunc1(np.ndarray[np.float_t, ndim=2] A, double [...
  • 3 votes
     answers
     views

    Cython:释放内存的内存视图

    在Cython代码中,我可以分配一些内存并将其包装在内存视图中,例如像这样: cdef double* ptr cdef double[::1] view ptr = <double*> PyMem_Malloc(N*sizeof('double')) view = <double[:N]> ptr 如果我现在使用 PyMem_Free(ptr) 释放内存,尝试访问像 p...

热门问题