第二题删掉第四列,且不求逆,就是一个三阶方阵,求,各路神仙大显灵通
每道题目请认真书写注释,要求描述该代码的功能及输出的结果。
每道题目请认真书写注释,要求描述该代码的功能及输出的结果。
第一题代码,使用快速排序:
import random
def quick_sort(arr, left, right):
# 只有left < right 排序
if left < right:
# pivot_index = partition(arr, left, right)
random_index = random.randint(left, right)
arr[left], arr[random_index] = arr[random_index], arr[left]
pivot = arr[left]
lt = left # arr[left+1...lt] < v
gt = right + 1 # arr[gt...right] > v
i = left + 1 # arr[lt+1...i] == v
while i < gt:
if arr[i] < pivot:
arr[i], arr[lt+1] = arr[lt+1], arr[i]
lt += 1
i += 1
elif arr[i] > pivot:
arr[i], arr[gt-1] = arr[gt-1], arr[i]
gt -= 1
else:
i += 1
arr[left], arr[lt] = arr[lt], arr[left]
quicksort(arr, left, lt-1)
quicksort(arr, gt, right)
# 通过数据进行测试
data = [1, 5, 7, 2, 4]
quicksort(data, 0, len(data)-1)
print(data)
第二题:
import sympy
import numpy as np
arr = np.array([[3, 2, 1], [1, 2, -3], [4, 4, -2]])
dim = arr.shape[0]
x = sympy.symbols([f"x{idx}" for idx in np.arange(dim)])
# 创建未知数列表
gen_sol = sympy.solve(np.array(x) @ arr, *x)
# 得到 arrx = 0 的通解
cond = sympy.Eq(sum(x), 1)
print(cond)
# 特征值
print(np.linalg.eigvals(arr))
# 特征向量
print(np.linalg.eig(arr))
第三题
import pandas as pd
# 导入数据
df = pd.DataFrame(columns=['姓名', '语文', '数学', '英语', '物理'])
df.loc[len(df)] = ['郭靖', 126.5, 130, 123, 78]
df.loc[len(df)] = ['杨过', 118.5, 116.5, 137, 75]
df.loc[len(df)] = ['段誉', 123.5, 124.5, 125, 74]
df.loc[len(df)] = ['虚竹', 120.5, 124.5, 121, 76]
df.loc[len(df)] = ['萧峰', 123.5, 114.5, 138, 58]
df.loc[len(df)] = ['令狐冲', 120.5, 117, 130, 75.5]
df.loc[len(df)] = ['叶开', 132, 119, 133, 66.5]
df.loc[len(df)] = ['楚留香', 120, 124.5, 132.5, 68]
df.loc[len(df)] = ['胡铁花', 118, 125, 130, 70]
df.loc[len(df)] = ['叶孤城', 121, 122.5, 114, 71.5]
# 求出总分和平均分
add_df = df.iloc[:, 1:].agg(['sum', 'mean']).rename({'sum': '各科总分', 'mean': '各科平均分'})
# 导出到excel
add_df.to_excel(r'd:\python1\score.xlsx')
第四题,使用KNN对iris数据进行分类:
from sklearn import neighbors
from sklearn import datasets
knn = neighbors.KNeighborsClassifier()
# 导入iris数据集
iris = datasets.load_iris()
knn.fit(iris.data, iris.target)
#对数据集进行拟合
predict_label =knn.predict([[0.1, 0.2, 0.3, 0.4]])
print(predict_label)#对数据进行预测