這裏列出的是與strides
另一種方法,並可以被看作是一個作弊的東西,因爲我們落後,超出分配的內存輸入數組的開始邁出了它有一個軟墊版本含蓄和實際分配值轉換爲結尾處的待填充區域。
下面是它會是什麼樣子 -
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]])
不會,我們需要填充的尾隨方太,像給定輸入:'split_size = 5,pad_length = 2'?所以,我猜測最後一行是:[隨機隨機] [7 8 9]。 – Divakar
爲什麼?對於這些參數,我應該得到這個 - > [[隨機,隨機,0,1,2,3,4],[3,4,5,6,7,8,9]'。如果問題不明確,我會很樂意在您指導下改進它! – martianwars
啊我得到了錯誤的參數。我的意思是如果'split_size = 3,pad_length = 2'? – Divakar