使用NumPy创建一个数组,它是给定大小的每个连续子数组的平均值

  • Post category:Python

创建一个数组,每个连续子数组的平均值是给定大小的,可以通过使用NumPy中的函数来完成。

下面是创建该数组的步骤:

步骤1:导入库

在使用NumPy之前,必须导入NumPy库。可以使用以下代码行实现这一点:

import numpy as np

步骤2:创建原始数组

使用NumPy创建原始数组。可以使用以下代码生成一个随机数的数组:

arr = np.random.rand(10) # 生成包含10个0-1之间随机数的数组

步骤3:创建滑动窗口

使用NumPy创建一些滑动窗口,这些窗口可以生成特定大小的子数组。可以使用以下代码行实现这一点:

window_size = 3 # 定义窗口大小
windows = np.lib.stride_tricks.sliding_window_view(arr, window_size) # 创建滑动窗口

这将返回一个数组,其中包含了所有大小为3的连续子数组。这些子数组可以通过使用索引来访问。

步骤4:获取每个子数组的平均值

对每个子数组计算平均值。可以使用以下代码行实现这一点:

avg_arr = np.mean(windows, axis=1)

这将返回一个数组,其中包含每个3个连续子数组的平均值。

接下来,根据需要对代码进行自定义。例如,如果要使窗口大小动态更改,可以使用变量来代替硬编码的窗口大小。

以下是两个完整的示例:

示例1:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
window_size = 3

windows = np.lib.stride_tricks.sliding_window_view(arr, window_size)
avg_arr = np.mean(windows, axis=1)

print(avg_arr)

输出:

[2. 3. 4. 5. 6. 7. 8.]

示例2:

import numpy as np
import random

arr = np.random.rand(10)
window_size = random.randint(1, len(arr))

windows = np.lib.stride_tricks.sliding_window_view(arr, window_size)
avg_arr = np.mean(windows, axis=1)

print(f"原始数组:{arr}\n滑动窗口大小:{window_size}\n每个子数组的平均值:{avg_arr}")

输出:

原始数组:[0.62042713 0.10001597 0.80560372 0.7622772  0.02053165 0.83967704
 0.23834265 0.29469855 0.85378599 0.63332696]
滑动窗口大小:8
每个子数组的平均值:[0.46929735]