0
我有一個numpy的數組:循環在陣列上通過重疊視窗
seq = np.array(range(1,31))
In [24]: seq
Out[24]: array([ 1, 2, 3, ..., 28, 29, 30])
我想將其分割成重疊的(或不重疊)長度爲n的區段。
n=7
overlap = 3
windowed_seq = windowing(seq,n,overlap)
In [24]: windowed_seq
Out[24]: [ 1, 5, ..., 17, 21,
2, 6, ..., 18, 22,
3, 7, ..., 19, 23,
4, 8, ..., 20, 24,
5, 9, ..., 21, 25,
6, 10, ..., 22, 26,
7, 11, ..., 23, 27]
最後一欄:
25,
26,
27,
28,
29,
30,
31,
?]
被省略,因爲一個元素缺少完成窗口..
我發現在互聯網上該解決方案,但它不與陣列工作...
https://www.safaribooksonline.com/library/view/python-cookbook-2nd/0596007973/ch19s08.html
import itertools
def windows(iterable, length=2, overlap=0):
it = iter(iterable)
results = list(itertools.islice(it, length))
while len(results) == length:
yield results
results = results[length-overlap:]
results.extend(itertools.islice(it, length-overlap))
if results:
yield results
if _ _name_ _ == '_ _main_ _':
seq = 'foobarbazer'
for length in (3, 4):
for overlap in (0, 1):
print '%d %d: %s' % (length, overlap,
map(''.join, windows(seq, length, overlap)))
你能幫我讓它爲我的數組工作嗎?
你能顯示一個輸入與預期的輸出? – NoobEditor
@NoobEditor我編輯的問題與預期的輸出 – gabboshow