← 返回首页
利用NumPy进行统计分析
发表时间:2024-03-09 15:04:46
利用NumPy进行统计分析

1.读/写文件

读/写文件常用函数:

2.使用函数进行简单的统计分析

在NumPy中,除了可以使用通用函数对数组进行比较、逻辑等运算之外,还可以使用统计函数对数组进行排序、去重、求最大和最小值以及求均值等统计分析。

3.pandas矩阵运算和统计分析案例

# 导入NumPy库
import numpy as np  
import sympy as sp
from sympy import *
"""
题目1:
求以下矩阵的逆矩阵:
1  2  3
4  5  6
7  8  9
"""
# 创建一个矩阵
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("numpy计算的行列式的值:", np.linalg.det(matrix))
print("sympy计算行列式的值:", sp.Matrix(matrix).det())

matrix = np.mat(matrix)
print("numpy计算逆矩阵:", np.linalg.inv(matrix))
print("numpy计算逆矩阵:", matrix.I)

# mpy.matrices.common.NonInvertibleMatrixError: Matrix det == 0; not invertible
# 因为行列式为零,该矩阵不可逆。
if sp.Matrix(matrix).det() != 0:
    print("sympy计算的逆矩阵:", sp.Matrix(matrix).inv())

"""
题目2:
小明期末考试成绩数组为:[87,56,78,90,76,88]
计算考试成绩的方差和标准差。
"""
# 假设有一个考试分数的数值列表
scores = [87, 56, 78, 90, 76, 88]
# 将列表转换为NumPy数组
score_array = np.array(scores)
# 计算方差
# 默认是总体方差(计算时除以样本数 N)
variance = np.var(score_array)
# 计算标准差
std_deviation = np.std(score_array)
avg_score = np.mean(score_array)

print("---------numpy统计的结果----------")
print(f"平均分: {avg_score}")
print(f"方差: {variance}")
print(f"标准差: {std_deviation}")

print("---------python统计的结果----------")
n = len(scores)
score_sum = 0
for i in range(n):
    score_sum += scores[i]
avg_score = score_sum / n

total = 0
for i in range(n):
    total += (scores[i] - avg_score) ** 2
total = total / n
print(f"平均分: {avg_score}")
print('样本方差:', total)
print('样本标准差:', sqrt(total))

执行结果:

numpy计算的行列式的值: -9.51619735392994e-16
sympy计算行列式的值: 0
numpy计算逆矩阵: [[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]
 [-6.30503948e+15  1.26100790e+16 -6.30503948e+15]
 [ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]
numpy计算逆矩阵: [[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]
 [-6.30503948e+15  1.26100790e+16 -6.30503948e+15]
 [ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]
---------numpy统计的结果----------
平均分: 79.16666666666667
方差: 134.13888888888889
标准差: 11.581834435394459
---------python统计的结果----------
平均分: 79.16666666666667
样本方差: 134.13888888888889
样本标准差: 11.5818344353945