读/写文件常用函数:
在NumPy中,除了可以使用通用函数对数组进行比较、逻辑等运算之外,还可以使用统计函数对数组进行排序、去重、求最大和最小值以及求均值等统计分析。
# 导入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