05线性代数代码的实现
#数据预处理
import os
import numpy as np
import pandas as pd
import torch
from numpy import nan as NaN
#P5线性代数的补充
A = torch.arange(20).reshape(5,4)
#print(A)
#print(A.T) #矩阵的转置
B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]]) #创建对称矩阵
#print(B)
#print(B == B.T) #比较B和B转置是否一样
X = torch.arange(24).reshape(2,3,4) #创建三维张量 行 最后一维 列 第二维
#print(X)
A = torch.arange(20,dtype = torch.float32).reshape(5,4)
B = A.clone() #通过分配新内存,将A的一个副本分配给B
#print(A)
#print(A+B)
#print(A*B)
a = 2
X = torch.arange(24).reshape(2,3,4)
#print(a+X) #X 的所有元素加上2
#print((a * X).shape) #所有元素乘以a
X = torch.arange(4,dtype=torch.float32)
#print(X)
#print(X.sum())
A = torch.arange(20,dtype=torch.float32).reshape(5,4)
#print(A.shape)
#print(A.sum())
A_sum_axis0 = A.sum(axis=0) #对第一维度进行求和
#print(A_sum_axis0)
#print(A_sum_axis0.shape)
A_sum_axis1 = A.sum(axis=1) #对第二维度(列)进行求和
#print(A_sum_axis1)
#print(A_sum_axis1.shape)
A_sum_axis2 = A.sum(axis=[0,1]) #对两个维度(先行后列)进行求和
#print(A_sum_axis2)
#print(A_sum_axis2.shape)
#print(A.mean())
#print(A.sum()/A.numel())
A.mean(axis = 0)
A.sum(axis = 0)/A.shape[0]
#计算总和或均值时保持轴数不变
sum_A = A.sum(axis=1,keepdims=True)
#print(sum_A)
#通过广播将A除以sum_A
#print(A/sum_A)
#某个轴计算A元素的累积总和
#print(A.cumsum(axis=0))
#点积是相同位置的按元素乘积的和
y = torch.ones(4,dtype = torch.float32)
#print(X)
#print(y)
#print(torch.dot(X,y))
#我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积
#print(torch.sum(X*y))
#矩阵向量积A*X是一个长度为m的列向量,其i(th)元素是点积a转置X
#print(A.shape)
#print(X.shape)
#print(torch.mv(A,X))#A的第i行和X做点积
#我们可以将矩阵-矩阵乘法AB看作是简单地执行m次矩阵-向量积,并将结果拼接在一起,形成一个n*m矩阵
B = torch.ones(4,3)
#print(torch.mm(A,B))
#L2范数是向量元素平方和的平方根 范数是一个向量或矩阵的长度
u = torch.tensor([3.0,-4.0])
#print(torch.norm(u))
#L1范数,它表示为向量元素的绝对值之和
#print(torch.abs(u).sum())
#矩阵的弗罗贝尼乌斯范数 是 矩阵元素的平方和的平方根 F范数
#print(torch.norm(torch.ones(4,9)))