如何向6Darray广播numpy2darray

2024-09-30 20:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个六维数组(运行在python3.4上)的形式为

Weights 
MyValue 
WeightedValue  = Weight * MyValue

我想确定MyValue通过Weights'轴-j(可能范围从0到4)在其他轴上的加权平均值,但5轴是常量。在

(所以当j=2时,我们是在0,1,3,和{}之间取平均值)。在

然后我打算取这个平均值乘以Weights,然后从WeightedValue中减去乘积

我打算这么做是

^{pr2}$

fn()MyValue的平均值,定义如下:

^{3}$

我的问题如下:

平均值是一个2D数组,我需要fn()来生成一个6D数组,也就是说,在其他4维上广播2D结果

最后,我可以创建一系列循环来迭代轴j和轴5

import numpy as np
result = np.zeros((dim0,dim1,dim2,dim3,dim4,dim5))
for var1 in range(dim1):
    for var5 in range(dim5):
        result[:,dim1,:,:,:,dim5] = AverageValue[dim1,dim5]  

但我希望有一个更直接和更普遍的方法


Tags: infornprange数组result形式平均值
1条回答
网友
1楼 · 发布于 2024-09-30 20:25:35

代替fn,您可以使用:

j = 1;
axes = tuple({0,1,2,3,4} - {j})
fn = WeightedValue.sum(axes, keepdims=True) / Weights.sum(axes, keepdims=True)

很明显,关键是传递keepdims=True,它在求和轴的结果中保持单粒子维数,并使结果适合进一步广播。在

相关问题 更多 >