2016-11-23 15 views
0

私はまだCythonの仕組みを理解し始めています。 このスニペットは私のプログラムの遅い部分の1つを示しており、このforループを改善できるかどうか疑問に思っています。 まだ元のNumpyバージョンのように見えますが、cdefとint-conversionを追加しました。Cythonでforループをスピードアップ

cdef Py_ssize_t i, j 
cdef double ii, jj 

for ii in np.arange(startx, endx+1, 0.1): 
    for jj in np.arange(starty, endy+1, 0.1): 
     if my_condition(ii, jj): 
      i = <int>ii 
      j = <int>jj 
      data[i, j] += 1 

お勧めはありますか?

+0

'ii'や' jj'を変更したようには見えず、 'for'ループから' i'と 'j'の値を完全に無視します。また、浮動小数点ステップで 'np.arange'を使うことは、あなたがCythonを使っているかどうかにかかわらずひどい考えです。 'np.linspace'をお勧めしますが、Cythonはそれを最適化する方法を知らないと思います。 – user2357112

+0

キャスティングは一般的に高価であり、可能であればキャストもループから外す必要があります。 –

+0

全体的に、このコードは意味をなさない。 – user2357112

答えて