Python 如何在没有numpy(或任何包)的情况下计算加权平均值

Python 如何在没有numpy(或任何包)的情况下计算加权平均值,python,Python,我试图减少对软件包的依赖,并找到一些关于均值、中位数、模式和加权均值的统计问题的解决方案 基本上我有两个数组,让我们用N个元素把它们称为A和B。B中元素的加权平均值是多少 在这里,我也不想使用def-weightedMean。有什么方法可以做到这一点吗?是的,这可以在不使用函数定义的情况下完成 试试这个: wMean = 0 for i in range(N): ## Loop through all the weights wMean += (A[i] * B[i]) ## Multi

我试图减少对软件包的依赖,并找到一些关于均值、中位数、模式和加权均值的统计问题的解决方案

基本上我有两个数组,让我们用N个元素把它们称为A和B。B中元素的加权平均值是多少


在这里,我也不想使用def-weightedMean。有什么方法可以做到这一点吗?

是的,这可以在不使用函数定义的情况下完成

试试这个:

wMean = 0
for i in range(N): ## Loop through all the weights
    wMean += (A[i] * B[i]) ## Multiply the weights by the result
wMean /= sum(A) ## Divide the sum to get the Weighted Mean
当然,您也可以定义一个将两个给定数字相乘的函数,并使用此函数映射列表,但您已经声明不希望使用任何函数

def mul(tup):
    return tup[0]*tup[1]

A=[10, 40, 30, 50, 20]
B=[1, 2, 3, 4, 5]
print(round( sum(map(mul,zip(A,B)))/sum(B),1))

它本质上是一个内联函数


当A不是十进制形式时,在Adi219的基础上构建:

A=[10, 40, 30, 50, 20]
B=[1, 2, 3, 4, 5]

sumA = sum(A)
lenghtOfB = len(B)
wMean = 0
for i in range(lenghtOfB):
    wMean += (A[i]/sumA * B[i]) 

print('the weighed mean is: {}'.format(wMean))

我不知怎的知道这一点,请张贴您现有的代码。sumx*w代表w,x在zipA,B/sumA?。。。为什么不想使用函数?这些规范似乎相当武断。这个问题的表述很糟糕。。。例如,您说有两个数组A和B,但没有指定它们之间的关系。我理解如果你不想引入对numpy的依赖,甚至不想引入def-weightedMean。。。?为什么?很明显,你没有努力去理解这个问题,也没有试图去解决它。我喜欢zipA中的sumx*w代表w,x,B/sumA的@Graipher甚至比我的任何一个都好-没有那么笨重。对不起,如果这是非常基本的,那么为什么我要用这个解的加权平均数除以10呢?@guda-A数字,B重量——这可能是原因。如果你用A作为权重,用B作为数字,如果你看数字的话,它是1/10——如果你有相反的结果,就用sumA代替sumB
A=[10, 40, 30, 50, 20]
B=[1, 2, 3, 4, 5]

sumA = sum(A)
lenghtOfB = len(B)
wMean = 0
for i in range(lenghtOfB):
    wMean += (A[i]/sumA * B[i]) 

print('the weighed mean is: {}'.format(wMean))