速求一个pyhton代码

img


第二题删掉第四列,且不求逆,就是一个三阶方阵,求,各路神仙大显灵通

每道题目请认真书写注释,要求描述该代码的功能及输出的结果。

第一题代码,使用快速排序:

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)#对数据进行预测

def select_sort(a):
for i in range(20):
min_index = i#初定索引值
for j in range(i+1,20):
if a[j] < a[min_index]:#判断索引值与储存数大小
min_index = j#替换储存数
if i != min_index:
a[i],a[min_index] = a[min_index],a[i]#交换位置
print(a)

select_sort([2,6,10,11,20,19,40,56,37,80,49,33,44,55,66,76,68,54,23,25])

import numpy as np
A = np.array([[3, 2, 1],[1, 2, -3],[4, 4, -2]])
b = np.array([0, 0, 0])

print('解:',np.linalg.pinv(A)b)#A逆b = x
print('特征值:',np.linalg.eig(A)[0])
print('特征向量:',np.linalg.eig(A)[1])
print('矩阵的逆',np.linalg.pinv(A))

import pandas as pd
d = [['郭靖', 126.5,130,123,78],
['杨过', 118.5,116.5,137,75],
['段誉', 123.5,124.5,125,74],
['虚竹', 120.5,124.5,121,76],
['萧峰', 123.5,114.5,138,58],
['令狐冲', 120.5,117,130,75.5],
['叶开', 132,119,133,66.5],
['楚留香', 120,124.5,132.5,68],
['胡铁花', 118,125,130,70],
['叶孤城', 121,122.5,114,71.5]]
df = pd.DataFrame(d, columns=['姓名', '语文','数学','英语','物理'], dtype=float)
print(df)
print('语文总分',df.语文.sum())
print('数学总分',df.数学.sum())
print('英语总分',df.英语.sum())
print('物理总分',df.物理.sum())
print('语文平均分',df.语文.mean())
print('数学平均分',df.数学.mean())
print('英语平均分',df.英语.mean())
print('物理平均分',df.物理.mean())
df.to_excel('D:/python1/score.xlsx')

找出两个数组公共的元素

Z1 = np.random.randint(0, 10, 10)
Z2 = np.random.randint(0, 10, 10)
print (np.intersect1d(Z1, Z2))