Pythonのコードを高速化させようと思い、Cythonを使用してます。
Cythonについてはこちらを参考にさせてもらってます。
今、問題となっているのは一次配列の配列(python風にいうとリスト)の宣言が正常に出来ていないためプログラムが止まってしまうことです。Googleで調べてはいますけど、私の理解不足なのかイマイチ解決に至らないためここに質問させていただきます。
コード
test.py
python
1import numpy as np 2import main 3 4def hoge(loop): 5 result = main.main(loop) 6 7if __name__ == '__main__': 8 ans = hoge(10) 9 print(ans)
main.pyx
python
1from __future__ import division 2import numpy as np 3cimport numpy as np 4DTYPE = np.int 5ctypedef np.int_t DTYPE_t 6 7def main(int loop): 8 9 cdef int i 10 cdef np.ndarray ans = np.zeros(loop, dtype=DTYPE) 11 12 for i in range(loop): 13 ans[i] = 0 14 15 return ans
setup.py
python
1from distutils.core import setup 2from distutils.extension import Extension 3from Cython.Distutils import build_ext 4import numpy 5 6ext_modules = [Extension('main', ['main.pyx'])] 7setup( 8 name = 'main app', 9 cmdclass = {'build_ext':build_ext}, 10 ext_modules = ext_modules 11)
###エラー文
Traceback (most recent call last): File "test.py", line 15, in <module> hoge(1000) File "test.py", line 10, in hoge result = main.main(loop) File "main.pyx", line 13, in main.main ans = [0 for i in range(loop)] TypeError: Cannot convert list to numpy.ndarray
スペック
Raspberry Pi 3 Model B
OS : 2017-11-29-raspbian-stretch

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/07 08:09 編集
退会済みユーザー
2018/03/07 08:14
2018/03/07 08:31
2018/03/07 09:12
退会済みユーザー
2018/03/07 09:14
退会済みユーザー
2018/03/07 09:27
2018/03/07 15:13
退会済みユーザー
2018/03/07 15:14
2018/03/08 00:38