Consecutive, Overlapping Subsets of Array (NumPy, Python)

后端 未结 7 1483
北恋
北恋 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

    Using itertools, and assuming Python 2.6:

    import itertools
    
    def byN(iterable, N):
        itrs = itertools.tee(iter(iterable), N)
        for n in range(N):
            for i in range(n):
                next(itrs[n], None)
        return zip(*itrs)
    
    aby4 = numpy.array(byN(thearray, 4))
    

提交回复
热议问题