我有一个长度为(6398)的一维权重数组和一个6398行的数组。我试图计算每行的加权平均值,并将其放入到新的列中。但我得到这个错误消息:
ValueError: Length of weights not compatible with specified axis.
这是没有意义的,因为看起来行/列是匹配的。这是一个简单的例子。
Tdfp1['pbs_monitor_public'] = np.average(arr, axis=1, weights=w)
我想我会在数据框的末尾有一个新列,它的行数与加权平均值的其余部分相同。
2条答案
按热度按时间r9f1avp51#
从文档中可以看到,权重的维度应该与计算平均值的轴的维度相匹配,或者应该与输入矩阵的维度相同。
weights:array_like,可选
中的值关联的权重数组。a中的每个值根据其相关权重对平均值做出贡献。权重数组可以是一维的(在这种情况下,它的长度必须是沿给定轴的沿着的大小),也可以是与相同形状的。如果weights=None,则假设a中的所有数据都具有等于1的权重。一维计算为:
avg = sum(a * weights)/ sum(weights)
所以我认为问题在于你的体重“w”的尺寸。下面是一个例子,我试过,为我工作。
kse8i1jr2#
我将假设您正在尝试计算一些列的加权平均值以创建一个新列。我创建了一个类似这样的示例框架:
现在,让我们指定列及其关联的权重。请注意,重要的是权重与列一样多。
我假设你是这样处理
arr
中的列的:现在,维度是有意义的,所以这是正确的: