做网站手机版和电脑版怎么区分,自动生成作文的软件,做网站可以赚多少钱,asp做登入网站文章目录 文件的读写创建.csv类型的文件#xff0c;并读取文件创建.xlsx文件 使用Python做图生成数据集切片取值操作修改张量中指定位置的数据 知识点torch.arange(x)torch.tensor(2)Atorch.randn(36).reshape(6,6)shapenumel()reshape(x,y,z)torch.zeros(3,3,4)torch.ones(2,… 文章目录 文件的读写创建.csv类型的文件并读取文件创建.xlsx文件 使用Python做图生成数据集切片取值操作修改张量中指定位置的数据 知识点torch.arange(x)torch.tensor(2)Atorch.randn(36).reshape(6,6)shapenumel()reshape(x,y,z)torch.zeros(3,3,4)torch.ones(2,3,4)torch.randn(4,5)torch.tensor([[1,2,3],[4,5,6],[7,8,9]])数组的加减乘除torch.exp(x)Z1torch.cat((X,Y),dim0)ZXYX.sum()矩阵的广播机制形状不一样的矩阵变成形状相同的矩阵矩阵中元素的获取before id(Y)torch.zeros_like(Y)Z[:]XYprint(type(A),type(B))print(a,a.item(),int(a),float(a))print(len(x))BA.TBA.clone()print(A.sum(axis[0,1])print(A.cumsum(axis0))zx*y 张量的乘法ytorch.mv(A,x)np.linalg.norm(A) 附录 文件的读写
创建.csv类型的文件并读取文件 .csv类型的文件是以逗号风格的字符串类型的数据 import os//导入操作计算机系统的对象
os.makedirs(os.path.join(..,data),exist_okTrue)//在当前项目所在的目录下创建文件data如果文件存在也不报异常
data_fileos.path.join(..,data,house_tiny.cvs)//在data目录下创建.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)import pandas//pandas主要用于数据的读取操作datapandas.read_csv(data_file)//读取.csv类型的数据
print(data)NumRooms Alley Price
0 NaN Pave 127500
1 2.0 NaN 106000
2 4.0 NaN 178100
3 NaN NaN 140000import os
os.makedirs(os.path.join(D:/File/test,data),exist_okTrue)
data_fileos.path.join(D:/File/test,data,house_tiny.csv)
with open(data_file,w) as f:f.write(NumRooms,Alley,Price\n)f.write(2.0,Pave,127500\n)f.write(4.0,NA,178100\n)f.write(NA,NA,140000\n)f.write(NA,Pave,127500\n)
import pandas
data pandas.read_csv(data_file)
print(data)import torch
import os
os.makedirs(os.path.join(D:/File/test,data),exist_okTrue)
data_fileos.path.join(D:/File/test,data,house_tiny.csv)
with open(data_file,w) as f:f.write(NumRooms,Alley,Price\n)f.write(2.0,Pave,127500\n)f.write(4.0,NA,178100\n)f.write(NA,NA,140000\n)f.write(NA,Pave,127500\n)import pandas
data pandas.read_csv(data_file)
print(data)inputs ,outputs data.iloc[:,0:2],data.iloc[:,2]
inputsinputs.fillna(inputs.select_dtypes(includenumber).mean())//fillna的作用填充空值用平均值进行填充
print(inputs)inputspandas.get_dummies(inputs,dummy_naTrue,dtypenumpy.int8)
print(inputs)
print(outputs)
X,ytorch.tensor(inputs.values),torch.tensor(outputs.values)
print(X)
print(y)NumRooms Alley Price
0 2.0 Pave 127500
1 4.0 NaN 178100
2 NaN NaN 140000
3 NaN Pave 127500NumRooms Alley
0 2.0 Pave
1 4.0 NaN
2 3.0 NaN
3 3.0 PaveNumRooms Alley_Pave Alley_nan
0 2.0 1 0
1 4.0 0 1
2 3.0 0 1
3 3.0 1 0
0 127500
1 178100
2 140000
3 127500
Name: Price, dtype: int64
tensor([[2., 1., 0.],[4., 0., 1.],[3., 0., 1.],[3., 1., 0.]], dtypetorch.float64)
tensor([127500, 178100, 140000, 127500])上述代码所用到的知识点总结 Pandas读取某列、某行数据——loc、iloc用法总结 pandas操作4处理缺失值/位置索引 【深入浅出学习笔记】李沐《动手学深度学习2.0》之数据预处理学习 import os
os.makedirs(os.path.join(D:/File/test,testdata),exist_okTrue)
data_fileos.path.join(D:/File/test,testdata,house.csv)
with open(data_file,w) as f:f.write(size,price\n)f.write(20,10\n)f.write(30,20\n)
import pandas
datapandas.read_csv(data_file)
print(data)创建.xlsx文件
import pandas as pd
import numpy as np
import os
os.makedirs(os.path.join(D:/,实验数据),exist_okTrue)
# 生成DataFrame
data pd.DataFrame(np.arange(30).reshape((6, 5)),columns[A, B, C, D, E])
# 写入本地
data.to_excel(D:\\实验数据\\data.xlsx, sheet_namedata)
print(data)使用Python做图
import numpy
from matplotlib_inline import backend_inline
from d2l import torch as d2l
def f(x):return 3*x**2-4*xdef numerical_lim(f,x,h):return (f(xh)-f(x))/hh0.1
for i in range(5):print(fh{h:.5f},numerical limit{numerical_lim(f,1,h):.5f})h*0.1//这是一个求导的过程def use_svg_display():#savebackend_inline.set_matplotlib_formats(svg)//通过在线的方式设置画布类型为svgdef set_figsize(figsize):#saveuse_svg_display()d2l.plt.rcParams[figure.figsize]figsize//设置画布的尺寸为figsize#save
def set_axes(axes,xlabel,ylabel,xlim,ylim,xscale,yscale,legend):axes.set_xlabel(xlabel)//设置X轴的标签axes.set_ylabel(ylabel)axes.set_xlim(xlim)//设置X轴上的数值axes.set_ylim(ylim)axes.set_xscale(xscale)//设置X轴上的数值的缩放比例axes.set_yscale(yscale)if legend:axes.legend(legend)//axes.legend()函数说明图例的位置等相关属性axes.grid()//grid()函数用于设置绘图区网格线。#save
def plot(X,YNone,xlabelNone,ylabelNone,legendNone,xlimNone,ylimNone,xscalelinear,yscalelinear,fmts(-,m--,g-.,r:),figsize(3.5,2.5),axesNone):
// 这是一种在Matplotib中设置图形线条样式的方式。在Matplotib中可以使用fmts参数来设置线条样式。fmts参数是一个字符串由一个或多个字符//组成每个字符都代表了一个设计元素用于设置线条的颜色、线型和标记。
//在给定的fmts参数中每个字符的含义如下:
//·第一个字符(-)代表线的颜色这里的-代表黑色。
//·第二个字符(m)代表线的样式这里的m--代表品红色的虚线。·第三个字符(g)代表线的颜色这里的g代表绿色。
//·第四个字符(r)代表线的颜色这里的r:代表红色的点线。
//通过在Matplotlib中设置fmts参数可以使不同的线条呈现不同的颜色、样式和标记从而更加直观地表达数据之间的关系。if legend is None:legend[]set_figsize(figsize)axesaxes if axes else d2l.plt.gca()
//[动手学深度学习-导数和微分-第二章plot函数理解](https://blog.csdn.net/qyk666/article/details/134756786)def has_one_axis(X):return (hasattr(X,ndim) and X.ndim1 or isinstance(X,list) and not hasattr(X[0],__len__))if has_one_axis(X):X[X]if Y is None:X,Y[[]]*len(X),Xelif has_one_axis(Y):Y[Y]if len(X)!len(Y):XX*len(Y)axes.cla()for x,y, fmt in zip(X,Y,fmts):if len(x):axes.plot(x,y,fmt)else:axes.plot(y,fmt)set_axes(axes,xlabel,ylabel,xlim,ylim,xscale,yscale,legend)xnumpy.arange(0,3,0.1)
plot(x,[f(x),2*x-3],x,f(x),legend[f(x),Tangent line (x1)])
plt.show()import numpy
import math
from d2l import torch as d2l
def normal(x,mu,sigma):p1/np.sqrt(2*math.pi*sigma**2)return p*np.exp(-0.5/sigma**2*(x-mu)**2)xnumpy.arange(-10,10,0.01)
params[(0,1),(0,2),(3,1)]d2l.plot(x,[normal(x,mu,sigma) for mu,sigma in params],xlabelx,ylabelp(x),figsize(4.5,2.5),legend[fmean{mu},std{sigma} for mu ,sigma in params])
plt.show()import random
import torch
from d2l import torch as d2l
def synthetic_data(w,b,num_examples):#saveXtorch.normal(0,1,(num_examples,len(w)))ytorch.matmul(X,w)bytorch.normal(0,0.01,y.shape)return X,y.reshape((-1,1))
true_wtorch.tensor([2,-3.4])
true_b4.2
features ,labelssynthetic_data(true_w,true_b,1000)
print(features:,features[0],\nlabel:,labels[0])
# print(labels)
d2l.set_figsize()
# print(features[:,(1)].detach().numpy())
# print(fasfsadfsdfsdf)
# print(labels.detach().numpy)
d2l.plt.scatter(features[:,(1)].detach().numpy(),labels,1)plt.show()生成数据集
切片取值操作
修改张量中指定位置的数据
import torch
Xtorch.zeros(3,4)
X[1,1]1
Ytorch.ones(3,4)
Y[0,0]0
print(XY)
print(XY)
print((XY))知识点
torch.arange(x) 作用依据x生成一个数组 import torch
xtorch.arange(12)
print(x)
tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])import numpy
xnumpy.arange(12)
print(x)
[ 0 1 2 3 4 5 6 7 8 9 10 11]import torch
xtorch.arange(4)
print(x)
print(x[2])torch.tensor(2) 作用生成指定的张量 import torch
xtorch.tensor(2)
ytorch.tensor(3)
print(xy,x-y,x*y,x/y,x**y)
tensor(5) tensor(-1) tensor(6) tensor(0.6667) tensor(8)Atorch.randn(36).reshape(6,6) 作用生成符合正太分布的数据 Atorch.randn(36).reshape(6,6)
print(AA.T)
Atorch.arange(25).reshape(5,5)
print(A)
print(len(A))
print(A/A.sum(axis1))
print(A.sum(axis1))
print(A)shape 作用查看调用者的形状或者称呼为尺寸 import torch
xtorch.arange(12)
ax.shape
print(a)
torch.Size([12])import numpy
xnumpy.arange(12)
ax.shape
print(a)
(12,)import torch
Atorch.arange(24).reshape(2,3,4)
print(A.shape,A.shape[0],A.shape[1],A.shape[2])numel() 作用名称的字面意思元素的数量查看元素的数量 import torch
xtorch.arange(12)
ax.numel()
print(a)
12reshape(x,y,z) 作用将数据的展示形状进行重新的塑形 import torch
xtorch.arange(12)
Xx.reshape(3,4)
print(X)
tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]])import numpy
xnumpy.arange(12)
Xx.reshape(3,4)
print(X)
[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]-1的作用依据数据自动计算数值并填入 import torch
xtorch.arange(12)
Xx.reshape(-1,4)
print(X)
tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]])import torch
xtorch.arange(12)
Xx.reshape(3,-1)
print(X)
tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]])import numpy
xnumpy.arange(12)
Xx.reshape(-1,4)
print(X)
[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]import numpy
xnumpy.arange(12)
Xx.reshape(3,-1)
print(X)
[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]torch.zeros(3,3,4) 作用生成三维全为零的数据 import torch
Xtorch.zeros(3,3,4)
print(X)
tensor([[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]],[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]],[[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]]])import numpy as np
Xnp.zeros((2,2,3),int)
print(X)
[[[0 0 0][0 0 0]][[0 0 0][0 0 0]]]torch.ones(2,3,4) 作用生成三维全为1的数据 import torch as to
Xto.ones(2,2,3)
print(X)
tensor([[[1., 1., 1.],[1., 1., 1.]],[[1., 1., 1.],[1., 1., 1.]]])在python中想要改变函数的返回结果往往只需要在参数列表中在添加一些参数 import numpy as np
Xnp.ones((2,2,2),float)
print(X)
[[[1. 1.][1. 1.]][[1. 1.][1. 1.]]]torch.randn(4,5) 作用生成符合正太分布的数据 import torch
Xtorch.randn(4,5)
print(X)
tensor([[-1.1866, 1.1176, 1.0693, -1.0216, 0.1562],[ 0.1815, 0.3246, 1.1276, 0.5653, -1.4328],[ 0.1206, 0.6508, -0.4501, 0.0958, 0.7154],[ 1.1551, 0.1163, 0.7360, 0.7723, -0.1527]])import numpy
Xnumpy.random.randn(3,4)
print(X)
[[ 0.77655555 -0.89418554 -1.27220862 -0.52597834][-0.20755957 -0.53087554 -0.83361693 1.29417959][ 0.49374487 1.55469626 0.53871618 -0.01278069]]torch.tensor([[1,2,3],[4,5,6],[7,8,9]]) 自定义数据 import torch
Xtorch.tensor([[1,2,3],[4,5,6],[7,8,9]])
print(X)
tensor([[1, 2, 3],[4, 5, 6],[7, 8, 9]])数组的加减乘除
import torch
xtorch.tensor([1,2,4,8])
ytorch.tensor([2,2,2,2])
print(str(xy)\nstr(x-y)\nstr(x*y)\nstr(x/y)\nstr(x**y)\n)
tensor([ 3, 4, 6, 10])
tensor([-1, 0, 2, 6])
tensor([ 2, 4, 8, 16])
tensor([0.5000, 1.0000, 2.0000, 4.0000])
tensor([ 1, 4, 16, 64])torch.exp(x) 作用生成数学公式中e函数 import torch
xtorch.tensor([1,2,3,4])
xtorch.exp(x)
print(x)
tensor([ 2.7183, 7.3891, 20.0855, 54.5981])import numpy
xnumpy.array([1,2,3,4],float)
print(x)
xnumpy.exp(x)
print(x)
[1. 2. 3. 4.]
[ 2.71828183 7.3890561 20.08553692 54.59815003]Z1torch.cat((X,Y),dim0) 作用合并数据存储类型dim0按照列合并dim1按照行合并 import torch
Xtorch.arange(12,dtypetorch.int).reshape(3,4)
print(X)
Ytorch.tensor([[1,2,3,4],[2,2,2,2],[6,6,6,6]])
Z1torch.cat((X,Y),dim0)
Z2torch.cat((X, Y),dim1)
print(Y)
print(Z1)
print(Z2)
tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]], dtypetorch.int32)
tensor([[1, 2, 3, 4],[2, 2, 2, 2],[6, 6, 6, 6]])
tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11],[ 1, 2, 3, 4],[ 2, 2, 2, 2],[ 6, 6, 6, 6]])
tensor([[ 0, 1, 2, 3, 1, 2, 3, 4],[ 4, 5, 6, 7, 2, 2, 2, 2],[ 8, 9, 10, 11, 6, 6, 6, 6]])ZXY 作用比较两个矩阵是否相等比较的是两个数据存储结构中的每一位元素是否相等 import torch
Xtorch.arange(12).reshape(3,4)
print(X)
Ytorch.tensor([[1,2,3,4],[2,2,2,2],[6,6,6,6]])
print(Y)
ZXY
print(Z)X.sum() 作用 将矩阵中所有的元素相加 import torch
Xtorch.arange(12).reshape(3,4)
print(X.sum())import torch
xtorch.arange(4)
print(x)
print(x.sum())矩阵的广播机制形状不一样的矩阵变成形状相同的矩阵 作用广播机制可以使形状不一样的矩阵变成一样的矩阵 import torch
atorch.arange(3).reshape(3,1)
print(a)
btorch.arange(2).reshape(1,2)
print(b)
Cab
print(C)
tensor([[0],[1],[2]])
tensor([[0, 1]])
tensor([[0, 1],[1, 2],[2, 3]])import torch
Atorch.tensor([[[1,2,3],[4,5,6]],[[1,2,3],[1,2,3]]])
print(A)
a2
AaA
print(A)
AA*a
print(A)矩阵中元素的获取 作用获取矩阵中特定位置的元素 import torch
Xtorch.arange(12).reshape(3,4)
print(X)
print(X[-1])
print(X[1,2])
X[1,2]111
print(X)
print(X[0:2])
X[0:2]111111
print(X)
X[0:2,:]222222
print(X)
tensor([[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]])
tensor([ 8, 9, 10, 11])
tensor(6)
tensor([[ 0, 1, 2, 3],[ 4, 5, 111, 7],[ 8, 9, 10, 11]])
tensor([[ 0, 1, 2, 3],[ 4, 5, 111, 7]])
tensor([[111111, 111111, 111111, 111111],[111111, 111111, 111111, 111111],[ 8, 9, 10, 11]])
tensor([[222222, 222222, 222222, 222222],[222222, 222222, 222222, 222222],[ 8, 9, 10, 11]])before id(Y) 作用查看对象在内存中的存储位置 import torch
Ytorch.ones(3,4)
Xtorch.ones(3,4)
before id(Y)
print(before)
YXY
afterid(Y)
print(after)
2392263829440
2391076947984torch.zeros_like(Y) 作用形成一个像Y一样的全为零的张量 import torch
Y torch.zeros(3,4)
X torch.ones(3,4)
Z torch.zeros_like(Y)
print(id(Z))
Z[:]XY
print(id(Z))
2255358553200
2255358553200Z[:]XY 作用可以使Z在内存中的存储位置不变使用这种类型的符合也不会改变对象在内存中的存储位置 import torch
Y torch.zeros(3,4)
X torch.ones(3,4)
Z torch.zeros_like(Y)
print(id(Z))
Z[:]XY
print(id(Z))
2255358553200
2255358553200import torch
Xtorch.zeros(3,2)
Ytorch.ones(3,2)
beforeid(X)
XY
print(beforeid(X))
Trueimport torch
Xtorch.zeros(2,4,1)
Ytorch.ones(2,4,4)
Y[:]XY
print(Y)
tensor([[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]],[[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]]])print(type(A),type(B)) 作用查看数据的数据类型 import torch
Xtorch.ones(3,4)
AX.numpy()
Btorch.tensor(A)
print(type(A),type(B))
print(A)
class numpy.ndarray class torch.Tensor
[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]print(a,a.item(),int(a),float(a)) 作用数据类型的强制转换 import torch
atorch.tensor([3.3])
print(a,a.item(),int(a),float(a))
tensor([3.3000]) 3.299999952316284 3 3.299999952316284print(len(x)) 作用查看张量的长度 import torch
xtorch.arange(4)
print(x)
print(len(x))
print(x.shape)BA.T 作用将张量进行转置 import torch
Atorch.arange(20).reshape(4,5)
print(A)
print(A[1,1])
BA.T
print(B)
print(B.shape)Atorch.arange(20).reshape(5,4)
print(A)
print(A.T)
print(A.T.T)
Btorch.arange(30).reshape(5,4)
print(A.TB.T(AB).T)BA.clone() 作用对张量A进行克隆 import torch
Atorch.arange(24).reshape(2,3,4)
BA.clone()
print(A)
CA*B
print(C)print(A.sum(axis[0,1]) 作用axis0代表列axis1代表行 import torch
Atorch.arange(20,dtypetorch.float32).reshape(5,4)
print(A.shape)
print(A.sum())
print(A.sum(axis0))
print(A)
print(A.shape)
print(A.sum(axis1))
print(A.sum(axis[0,1]))
print(A.numel())
print(A.mean(),A.sum()/A.numel())
print(A.shape[0])
print(A.mean(axis0),A.sum(axis0)/A.shape[0])import torch
Atorch.arange(24).reshape(2,3,4)
print(A.sum(axis0))
print(A.sum(axis1))
print(A.sum(axis2))
print(A)print(A.cumsum(axis0)) 作用列中的值等于列中这个位置的值加上此列中这个位置上面的所有的值 import torch
Atorch.arange(20,dtypetorch.float32).reshape(5,4)
sumA.sum(axis1,keepdimsTrue)
print(sum)
print(A/sum)
print(A.cumsum(axis0))
print(A)
tensor([[ 6.],[22.],[38.],[54.],[70.]])
tensor([[0.0000, 0.1667, 0.3333, 0.5000],[0.1818, 0.2273, 0.2727, 0.3182],[0.2105, 0.2368, 0.2632, 0.2895],[0.2222, 0.2407, 0.2593, 0.2778],[0.2286, 0.2429, 0.2571, 0.2714]])
tensor([[ 0., 1., 2., 3.],[ 4., 6., 8., 10.],[12., 15., 18., 21.],[24., 28., 32., 36.],[40., 45., 50., 55.]])
tensor([[ 0., 1., 2., 3.],[ 4., 5., 6., 7.],[ 8., 9., 10., 11.],[12., 13., 14., 15.],[16., 17., 18., 19.]])zx*y 张量的乘法 作用张量中对应位置的元素相乘 import torch
xtorch.arange(20).reshape(4,5)
ytorch.arange(20).reshape(4,5)
zx*y
print(z)
tensor([[ 0, 1, 4, 9, 16],[ 25, 36, 49, 64, 81],[100, 121, 144, 169, 196],[225, 256, 289, 324, 361]])ytorch.mv(A,x) 作用矩阵和向量相乘矩阵的行乘以向量的列并相加 import torch
xtorch.arange(4,dtypetorch.float32)
Atorch.arange(20,dtypetorch.float32).reshape(5,4)
print(x.shape,A.shape)
ytorch.mv(A,x)
print(y)
torch.Size([4]) torch.Size([5, 4])
tensor([ 14., 38., 62., 86., 110.])np.linalg.norm(A) 作用用于求张量的范数默认求的是二范数 import torch
import numpy as np
Atorch.arange(24).reshape(2,3,4)
print(np.linalg.norm(A))附录 关于文中提到的张量 在文中我提到的张量可以是众所周知的一维数组也可以使二维数组矩阵但是三维、四维数组很难用特有的名词来展示这里对一维、二维、三维、、、等统称为张量。当读到张量时我们需要根据上下文的代码自行推断。 关于文中引用到的链接 在文中引用到的链接均是上下文中代码知识的拓展