如何使用for循环计算numpy数组连续5行的均值和标准差
解决方案
核心调整思路是将单行切片修改为5行区间切片,同时调整循环终止条件避免切片越界,完整实现代码如下:
import numpy as np data = np.array([[49, 32, 32, 8, 49], [ 1, 29, 28, 45, 20], [11, 40, 5, 6, 21], [13, 45, 3, 12, 12], [11, 6, 39, 39, 27], [10, 34, 1, 15, 42], [31, 27, 3, 4, 12], [41, 14, 27, 45, 44], [48, 37, 14, 16, 13], [41, 9, 14, 49, 16]]) window_size = 5 # 循环次数为总行数-窗口大小+1,保证切片不会越界 for i in range(data.shape[0] - window_size + 1): # 取出连续5行的子数组 current_window = data[i:i+window_size] # 计算整体均值和标准差 mean_val = np.mean(current_window) std_val = np.std(current_window) print(f"窗口{i+1}(对应行{i}至行{i+4}):均值={mean_val:.2f},标准差={std_val:.2f}")
补充说明:
- 如果需要按列分别统计每组5行的均值和标准差,在
np.mean、np.std中添加参数axis=0即可,返回结果为长度5的数组,对应每一列的统计值 - 如果需要取不重叠的5行分组(即行0-4为第一组,行5-9为第二组),将循环语句修改为
for i in range(0, data.shape[0], window_size)即可
内容的提问来源于stack exchange,提问作者GlassDow
相关产品推荐
相关产品推荐

