1.1.基础知识

使用anaconda

创建虚拟环境:

conda create -n 自己输入名称 python=版本号

激活虚拟环境:

conda activate 名称

接着下载包后,环境创建完成,在pycharm或者其他编译器中配置好对应的python环境即可

访问元素

一个数组d

一个元素:d[1,2]

一行:d[1,:] 第一行

一列:d[:,1] 第一列

子区域: [1:3,1:] 第一行到第三行,第一列以后

子区域:[l:r:3,l:r:2],[l,r) 每三行取一个,每两列取一个

在这里插入图片描述

Pytorch的一些简单操作

import torch

x = torch.arange(24)
print(x)
print(x.shape)  # 看这个矩阵的形状
print(x.numel())  # 矩阵元素的数量
X = x.reshape(2, 3, 4)  # 改变矩阵的形状,但不改变元素的个数
print(X)
# 全0 全1矩阵
print(torch.zeros((2, 3, 4)))
print(torch.ones((2, 3, 4)))
# 列表赋值
y = torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
print(y)
print(y.size())
# 矩阵运算
x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([2, 2, 2, 2])
print('x+y:', x + y)
print('x-y:', x - y)
print('x*y:', x * y)
print('x/y:', x / y)
print('x**y:', x ** y)
# 张量连结
x = torch.arange(12, dtype=torch.float32).reshape((3, 4))
y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
z = torch.cat((x, y), dim=0)  # dim=0 意为在行上合并
z2 = torch.cat((x, y), dim=1)  # dim=1 意为在列上合并

print('按行合并')
print(z)
print('按列合并')
print(z2)

# 使用逻辑运算创建二维张量
print(x == y)
# 对张量求和
print(x.sum())
'''广播机制'''

a = torch.arange(3).reshape((3,1))
b = torch.arange(2).reshape((1,2))
print('a:',a)
print('b',b)
'''形状不一样,但维度一样,广播后就成为了3*2的矩阵'''
print(a+b)

'''一些操作会导致为新结果分配内存'''
before = id(y)
y = y+x
print(before == id(y))

'''执行原地操作的方法'''
z1 = torch.zeros_like(y)
print('id(z1):',id(z1))
z1[:] = x+y
print('id(z1):',id(z1))

'''转换为NumPy张量'''
A = x.numpy()
B = torch.tensor(A)
print(type(A))
print(type(B))

数据预处理

import os
import pandas as pd


def init():
    os.makedirs(os.path.join('./', 'data'), exist_ok=True)
    data_file = os.path.join('./', 'data', 'house_tine.csv')  # 创建好路径
    with open(data_file, 'w') as f:
        f.write('NumRooms,Alley,Price\n')  # 列名
        f.write('NA,Pave,127500\n')  # 每行表示一个数据样本
        f.write('2,NA,106000\n')
        f.write('4,NA,178100\n')
        f.write('NA,NA,140000\n')


def show_data():
    data = pd.read_csv('./data/house_tine.csv')
    print(data)


def insert():
    data = pd.read_csv('./data/house_tine.csv')
    inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
    inputs = inputs.fillna(inputs.mean(numeric_only=True))  # 对于数值类,插值方法是插入剩余有值部分的均值
    print(inputs)
    inputs = pd.get_dummies(inputs,dummy_na = True,dtype=float) #对于类别值和离散值,可以将NaN视为一个类别
    print(inputs)


show_data()
insert()

线性代数以及pytorch操作

import torch

A = torch.arange(20).reshape(4, 5)
print(A)

print('A的转置:', A.T)
# 如果A==A.T 则为对称矩阵、

X = torch.arange(24).reshape(2, 3, 4)  # 越到后面维度越低,2页,3行,4列
print(X)

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()  # 深拷贝,B=A不会创建新的对象
print(A, '\n', A + B)

# 任意维度求和
A = torch.arange(20 * 2, dtype=torch.float32).reshape(2, 5, 4)
print('原始的A矩阵:', A)
A_sum = A.sum()
A_sum_axis0 = A.sum(axis=0)
A_sum_axis1 = A.sum(axis=1)

print('对所有元素求和:', A_sum)
print('对维度0求和,剩下一个5*4的矩阵:', A_sum_axis0)
print('对维度1求和,剩下一个2*4的矩阵:', A_sum_axis1)
# 对某一维度求和,就是合并这一维度,比睿维度1是行,就是行合并,位于同一页同一列的加在一起
'''还可以使用多个轴'''
A_sum_axis01 = A.sum(axis=[0, 1])  # 位于同一列的合并
print(A_sum_axis01)

# 均值
print(A.mean())
print(A.mean(axis=0))  # 按维度求均值
# 计算总和或维度时保持轴数不变
sum_A = A.sum(axis=1, keepdims=True)
print(sum_A)

# 点积
y = torch.ones(4, dtype=torch.float32)
x = torch.tensor([0., 1., 2., 3.], dtype=torch.float32)
print(torch.dot(x, y))  # 作点积
# 也可以做乘法和求和来表示点积
print(torch.sum(x * y))

# 计算AB,m*n的矩阵乘上n*t的矩阵,自动拼接位m*t的矩阵
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = torch.ones(4, 3)
print(torch.mm(A, B))

# 范数
u = torch.tensor([3.0, -4.0])
print(torch.norm(u))  # L2范数
print(torch.abs(u).sum())  # L1范数

矩阵运算

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值