gpt4 book ai didi

python - 如何使用大小为 m 的滑动窗口将 numpy 数组划分为 n 个子数组?

转载 作者:行者123 更新时间:2023-12-01 12:04:20 31 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Taking subarrays from numpy array with given stride/stepsize

(3 个回答)


1年前关闭。




我有一个很大的 NumPy 数组,我想通过移动特定大小的窗口将其分成许多子数组,这是我在大小为 11 的子数组的情况下的代码:

import numpy as np

x = np.arange(10000)
T = np.array([])

for i in range(len(x)-11):
s = x[i:i+11]
T = np.concatenate((T, s), axis=0)

但是对于超过 100 万个条目的数组来说它非常慢,有什么提示可以让它更快吗?

最佳答案

实际上,这是as_strided的一个案例。 :

from numpy.lib.stride_tricks import as_strided

# set up
x = np.arange(1000000); windows = 11

# strides of x
stride = x.strides;

T = as_strided(x, shape=(len(x)-windows+1, windows), strides=(stride, stride))

输出:
array([[     0,      1,      2, ...,      8,      9,     10],
[ 1, 2, 3, ..., 9, 10, 11],
[ 2, 3, 4, ..., 10, 11, 12],
...,
[999987, 999988, 999989, ..., 999995, 999996, 999997],
[999988, 999989, 999990, ..., 999996, 999997, 999998],
[999989, 999990, 999991, ..., 999997, 999998, 999999]])

表现:
5.88 µs ± 1.27 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

关于python - 如何使用大小为 m 的滑动窗口将 numpy 数组划分为 n 个子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277983/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com