25

型付きメモリビューを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

コピーするかどうかはそれほど決定的ではありません。私はこれについて助けを見つけることができませんでした。

4

1 に答える 1

33

メモリビュー自体で直接使用できるはずnp.asarrayなので、次のようになります。

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 拡張機能を使用しています。

于 2014-01-07T17:59:57.030 に答える