私は次のタイプの多くのループをしなければなりません
for i in range(len(a)):
for j in range(i+1):
c[i] += a[j]*b[i-j]
ここで、aとbは短い配列です(同じサイズで、約10から50の間です)。これは、畳み込みを使用して効率的に実行できます。
import numpy as np
np.convolve(a, b)
ただし、これにより完全な畳み込みが得られます(つまり、上記のforループと比較してベクトルが長すぎます)。畳み込みで「同じ」オプションを使用すると、中央部分が取得されますが、必要なのは最初の部分です。もちろん、完全なベクトルから不要なものを切り落とすことはできますが、可能であれば不要な計算時間を取り除きたいと思います。誰かがループのより良いベクトル化を提案できますか?