如何重复执行均匀分布数值统计流程并存储每次结果?
问题分析与解决方法
你的代码存在两个核心问题:
- 外层循环中没有重新生成新的随机数组y,始终用同一组数据统计,结果自然重复
- 没有为每次统计初始化统计变量,且未存储单次统计结果,最终得到的是N次统计的总和而非每次的独立值
正确实现(基础循环版)
我们需要在每次外层循环中:重新生成随机数组、初始化统计变量、完成统计后将结果存入列表:
import numpy as np N = 5 results = [] # 存储每次统计的X值 for _ in range(N): # 每次循环重新生成均匀分布的随机数组 y = np.random.uniform(0, 500, 500) x_count = 0 for val in y: if val < 1: x_count += 1 results.append(x_count) print(results) # 输出每次的统计结果,比如类似[1, 0, 2, 1, 0]
更高效的Numpy向量化实现
利用Numpy的向量化操作可以简化代码,避免嵌套循环,运行效率更高:
import numpy as np N = 5 # 一次性生成N组500个元素的随机数组,形状为(N, 500) y = np.random.uniform(0, 500, (N, 500)) # 对每组统计小于1的元素数量,得到长度为N的结果数组 results = (y < 1).sum(axis=1) print(results.tolist()) # 转为列表输出,和循环版结果格式一致
关键说明
- 向量化版本中,
(y < 1)会生成一个布尔数组,sum(axis=1)表示按行(即每组数据)求和,统计True的数量(对应小于1的元素) - 两种方式都能实现需求,向量化版本更适合大数据量的场景
内容的提问来源于stack exchange,提问作者In the blind
相关产品推荐
相关产品推荐

