はstrides
と別のアプローチであり、それは暗黙のうち、実際に割り当てるパッド入りのバージョンを持っているため、我々は割り当てられたメモリを超えた入力配列の先頭から後方ストライドと同じように、チートものとして見することができ最後にパッドされた領域に値を挿入します。 `split_size =: -
def padded_sliding_windows(a, split_size, pad_length, padnum):
n = a.strides[0]
L = split_size + pad_length
S = L - pad_length
nrows = ((a.size + pad_length -L)//split_size)+1
strided = np.lib.stride_tricks.as_strided
out = strided(a[split_size - 1:], shape=(nrows,L), strides=(S*n,-n))[:,::-1]
out[0,:pad_length] = padnum
return out
いくつかのサンプルを実行 - 私たちは、あまりにもトレーリング側にパディングを必要とするようにして与えられた入力のためではないだろう
In [271]: a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
In [272]: padded_sliding_windows(a, split_size = 2, pad_length = 1, padnum = 100)
Out[272]:
array([[100, 0, 1],
[ 1, 2, 3],
[ 3, 4, 5],
[ 5, 6, 7],
[ 7, 8, 9],
[ 9, 10, 11]])
In [273]: padded_sliding_windows(a, split_size = 3, pad_length = 2, padnum = 100)
Out[273]:
array([[100, 100, 0, 1, 2],
[ 1, 2, 3, 4, 5],
[ 4, 5, 6, 7, 8],
[ 7, 8, 9, 10, 11]])
In [274]: padded_sliding_windows(a, split_size = 4, pad_length = 2, padnum = 100)
Out[274]:
array([[100, 100, 0, 1, 2, 3],
[ 2, 3, 4, 5, 6, 7],
[ 6, 7, 8, 9, 10, 11]])
ここ
は、それがどのように見えるだろうかです5、pad_length = 2 '?だから、私は最後の行が '[7 8 9 random random] 'であると推測しています。 – Divakar
なぜですか?これらのパラメータのために、私はこれを得るべきです['ランダム、ランダム、0,1,2,3,4]、[3,4,5,6,7,8,9]。質問が明確でない場合は、指示に従って改善していただきたいと思います。 – martianwars
ああ、私はパラメータを間違えてしまった。私は 'split_size = 3、pad_length = 2'を意味しましたか? – Divakar