作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 CythonGSL 时,我发现自己需要为“gsl 向量”创建 numpy.ndarray View ,该 View 在以下 cython 代码中定义:
ctypedef struct gsl_vector:
size_t size
size_t stride
double *data
gsl_block *block
int owner
所以我可以访问向量的大小以及指向它的指针。我如何使用它们来获取该向量的 numpy.ndarray View ?
这是我失败的尝试:
import numpy as np
cdef mycast(const gsl_vector *v):
cdef size_t n = v.size
return np.ctypeslib.as_array((ctypes.c_double * n).from_address(v.data))
但是,这失败了
Cannot convert 'const double *' to Python object
正确的类型转换方法是什么?
最佳答案
这里有一件有效的事情:
import numpy as np
from cython cimport view
cdef mycast(const gsl_vector *v):
cdef size_t n = v.size
cdef double[:] myview = <double[:n]> v.data
return np.asarray(myview)
通读 cython typed memoryviews doc 很有帮助,但我仍然希望得到一些关于最佳实践(无论是为了效率还是为了持续正确性)的答案。
关于python - 从双指针(来自 CythonGSL)获取 numpy ndarray (查看,而不是复制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571821/
机器配置:我的配置是 windows 7 x64,安装了 python 2.7 和 cython 0.18(所有 64 位)。我还安装了 MS C++ 2008 Visual Studio。 我有 G
在使用 CythonGSL 时,我发现自己需要为“gsl 向量”创建 numpy.ndarray View ,该 View 在以下 cython 代码中定义: ctypedef struct gsl_
我是一名优秀的程序员,十分优秀!