同じ長さの 2 つの配列があり、1 つはデータを保持し、もう 1 つは結果を保持しますが、最初はゼロに設定されています。
a = numpy.array([1, 0, 0, 1, 0, 1, 0, 0, 1, 1])
b = numpy.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
a の 3 つの隣接する要素のすべての可能なサブセットの合計を計算したいと思います。合計が 0 または 1 の場合、b の対応する 3 つの要素は変更されません。合計が 1 を超える場合にのみ、b の対応する 3 つの要素が 1 に設定されるため、計算後に b は次のようになります。
array([0, 0, 0, 1, 1, 1, 0, 1, 1, 1])
単純なループでこれを実現します。
for x in range(len(a)-2):
if a[x:x+3].sum() > 1:
b[x:x+3] = 1
この後、b は目的の形式になります。
大量のデータに対してこれを行う必要があるため、速度が問題になります。上記の操作をNumPyで実行するためのより高速な方法はありますか?
(これは畳み込みに似ていることは理解していますが、まったく同じではありません)。