擅长:python、mysql、java
<^ >看起来{{CD1}}需要你自己做内存管理;如果内存管理已经在C++端上处理,也就是说Python对内存不负责,你可以使用^ {CD2>}来获得一个与C++向量共享内存的NUMPY数组,比如:
<pre><code>from libcpp.vector cimport vector
import numpy as np
cdef vector[double] vec
vec.push_back(1)
vec.push_back(2)
cdef double *vec_ptr = &vec[0] # get hold of data array underlying vec; also vec.data() if you have C++11
cdef double[::1] vec_view = <double[:vec.size()]>vec_ptr # cast to typed memory view
vec_npr = np.asarray(vec_view) # get numpy array from memory view
print(vec_npr) # array([1.0, 2.0])
</code></pre>
< Kurt Smith的Cython书第10章中的“包装C和C++数组”部分提供了很好的例子。另请参见<a href="http://docs.cython.org/en/latest/src/userguide/memoryviews.html#coercion-to-numpy" rel="nofollow noreferrer">Coercion to Numpy from official user guide</a>。</p>