给定一个大小为n
的numpy数组和一个整数m
,我想生成该数组的所有连续m
长度子序列,最好以二维数组形式表示。
示例:
>>> subsequences(arange(10), 4)
array([[0, 1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6, 7],
[2, 3, 4, 5, 6, 7, 8],
[3, 4, 5, 6, 7, 8, 9]])
我能想到的最好方法是这样做:
def subsequences(arr, m):
n = arr.size
# Create array of indices, essentially solution for "arange" input
indices = cumsum(vstack((arange(n - m + 1), ones((m-1, n - m + 1), int))), 0)
return arr[indices]
是否有更好的,最好是内置的函数我错过了吗?
m
长度的子序列,但在示例中,m
是子序列的数量,而不是它们的长度。 - logc