型付きメモリビューを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)
これを使用すると、コンパイラは次のように通知します。
Can only create cython.array from pointer or array
コピーするかどうかはそれほど決定的ではありません。私はこれについて何の助けも見つけることができませんでした。
np.asarray
をmemoryview自体で直接使用できるはずなので、次のようになります。
np.asarray(my_memview)
動作するはずです。たとえば、cythonソースファイルに次のものが含まれている場合:
import numpy as np
cimport numpy as np
def test(double[:,:] x):
print type(x)
print type(np.asarray(x))
それをコンパイルした後、python側から次のことができるはずです:
a = np.random.normal(size=(5,5))
test(a)
これにより、次の出力が生成されます。
<type '_cython_magic_0182fca918bfa3618c3553e51b13e8ba._memoryviewslice'>
<type 'numpy.ndarray'>
注:IPython用のcythonmagic拡張機能を使用しています。