100个numpy问题72-100

  1. 如何从给定的一维数组创建步幅,比如:
# 原始数组
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
# 想要得到的结果
[[array([0, 1, 2, 3])],
 [array([2, 3, 4, 5])],
 [array([4, 5, 6, 7])],
 [array([6, 7, 8, 9])],
 [array([ 8,  9, 10, 11])],
 [array([10, 11, 12, 13])]]
# -*- coding: utf-8 -*-
"""
Created on Sat Nov  7 13:10:04 2020

@author: 15025
"""

import numpy as np


class NumpyStudy:
    @staticmethod
    def findRepeatElementIndex():
        array = np.arange(15)
        index_ = np.arange(0, 15, 2)
        final_array= [[array[index_[i]:index_[i + 2]]] for i in range(6)]
        print(final_array)


if __name__ == "__main__":
    main = NumpyStudy()
    main.findRepeatElementIndex()
"""
[[array([0, 1, 2, 3])], 
[array([2, 3, 4, 5])], 
[array([4, 5, 6, 7])], 
[array([6, 7, 8, 9])], 
[array([ 8,  9, 10, 11])], 
[array([10, 11, 12, 13])]]
"""

方法二:

# -*- coding: utf-8 -*-
"""
Created on Sat Nov  7 13:10:04 2020

@author: 15025
"""

import numpy as np


class NumpyStudy:
    @staticmethod
    def findRepeatElementIndex():
        def gen_strides(a, stride_len=5, window_len=5):
            n_strides = ((a.size - window_len) // stride_len) + 1

            return np.array([a[s:(s + window_len)] for s in np.arange(0, n_strides * stride_len, stride_len)])

        print(gen_strides(np.arange(15), stride_len=2, window_len=4))


if __name__ == "__main__":
    main = NumpyStudy()
    main.findRepeatElementIndex()
"""
[[ 0  1  2  3]
 [ 2  3  4  5]
 [ 4  5  6  7]
 [ 6  7  8  9]
 [ 8  9 10 11]
 [10 11 12 13]]
"""

猜你喜欢

转载自blog.csdn.net/u011699626/article/details/109705954