我有一个运行了很多次的模拟。每次生成一个数组并将其插入一个更大的数组中时,都会跟踪所有数据。例如
record = []
for i in range(2):
r = random.random()
array = numpy.arange(20)*r
array.shape = (10,2)
record.append(array)
record = numpy.array(record)
产生:
[[[ 0. 0.88765927]
[ 1.77531855 2.66297782]
[ 3.55063709 4.43829637]
[ 5.32595564 6.21361492]
[ 7.10127419 7.98893346]
[ 8.87659274 9.76425201]
[ 10.65191128 11.53957056]
[ 12.42722983 13.3148891 ]
[ 14.20254838 15.09020765]
[ 15.97786693 16.8655262 ]]
[[ 0. 0.31394919]
[ 0.62789839 0.94184758]
[ 1.25579677 1.56974596]
[ 1.88369516 2.19764435]
[ 2.51159354 2.82554274]
[ 3.13949193 3.45344112]
[ 3.76739031 4.08133951]
[ 4.3952887 4.70923789]
[ 5.02318709 5.33713628]
[ 5.65108547 5.96503466]]]
因为每个array
代表我的程序中的一个模拟。我想平均包含在record
中的两个不同数组。
基本上我想要一个与array
维度相同的数组,但它是所有单独运行的平均值。
很明显,我可以在阵列上循环,但是在我的实际模拟中有很多数据,所以我认为这将非常耗费时间
示例输出(显然不是零):
average = [[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]
[0.0, 0.0]]
上面示例中的
record
数组是三维的,形状为:第一个维度对应于实验的两次迭代。要平均它们,您需要告诉
np.average
沿着axis=0
执行它的操作如果您事先知道要运行多少个模拟,那么最好跳过列表并执行以下操作:
你为什么认为准时会很费钱?你仍然需要做同样数量的添加。加法是关联的!
只要做:
基本上你可以用
我不确定您要平均哪个轴,例如在您的示例中,两个轴具有维度2(您的数组具有形状(2,10,2))。如果你想平均最后一个,就用
相关问题 更多 >
编程相关推荐