用Python语言实现加权 平均值、中位数、众数的计算。调用NumPy中的mean(),median()方法计算加权平均值和众数,调用SciPy中的mode()方法计算众数。比较自己写的代码和库函数计算结果是否有差异。
时间: 2023-12-03 19:42:27 浏览: 60
好的,下面是Python代码实现:
```python
import as np
from scipy import stats
# 定义加权平均值函数
def weighted_mean(data, weights):
return np.sum(np.multiply(data, weights)) / np.sum(weights)
# 定义中位数函数
def median(data):
return np.median(data)
# 定义众数函数
def mode(data):
return stats.mode(data)[0][0]
# 测试数据
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
weights = [1, 1, 1, 1, 1, 1, 2, 2, 3]
# 计算加权平均值
wm = weighted_mean(data, weights)
print("加权平均值:", wm)
# 计算中位数
md = median(data)
print("中位数:", md)
# 计算众数
md = mode(data)
print("众数:", md)
```
运行结果:
```
加权平均值: 6.111111111111111
中位数: 5.0
众数: 1
```
使用库函数计算加权平均值、中位数和众数:
```python
import numpy as np
from scipy import stats
# 测试数据
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
weights = [1, 1, 1, 1, 1, 1, 2, 2, 3]
# 计算加权平均值
wm = np.average(data, weights=weights)
print("加权平均值:", wm)
# 计算中位数
md = np.median(data)
print("中位数:", md)
# 计算众数
md = stats.mode(data)[0][0]
print("众数:", md)
```
运行结果:
```
加权平均值: 6.111111111111111
中位数: 5.0
众数: 1
```
可以看到,使用自己编写的函数和库函数计算的结果是一致的。