Consecutive, Overlapping Subsets of Array (NumPy, Python)

后端 未结 7 1495
北恋
北恋 2020-12-05 11:52

I have a NumPy array [1,2,3,4,5,6,7,8,9,10,11,12,13,14] and want to have an array structured like [[1,2,3,4], [2,3,4,5], [3,4,5,6], ..., [11,12,13,14]]

7条回答
  •  误落风尘
    2020-12-05 12:03

    Quick&dirty solution:

    >>> a = numpy.arange(1,15)
    >>> numpy.array([ a[i:i+4] for i in range(len(a)-3) ])
    array([[ 1,  2,  3,  4],
           [ 2,  3,  4,  5],
           [ 3,  4,  5,  6],
           [ 4,  5,  6,  7],
           [ 5,  6,  7,  8],
           [ 6,  7,  8,  9],
           [ 7,  8,  9, 10],
           [ 8,  9, 10, 11],
           [ 9, 10, 11, 12],
           [10, 11, 12, 13],
           [11, 12, 13, 14]])
    

提交回复
热议问题