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
お勧めはありますか?
'ii'や' jj'を変更したようには見えず、 'for'ループから' i'と 'j'の値を完全に無視します。また、浮動小数点ステップで 'np.arange'を使うことは、あなたがCythonを使っているかどうかにかかわらずひどい考えです。 'np.linspace'をお勧めしますが、Cythonはそれを最適化する方法を知らないと思います。 – user2357112
キャスティングは一般的に高価であり、可能であればキャストもループから外す必要があります。 –
全体的に、このコードは意味をなさない。 – user2357112