创建一个数组,每个连续子数组的平均值是给定大小的,可以通过使用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]