随手查_python

学python中(主要是机器学习方面的)学到的一些函数和常见的处理方法,容易忘记所以记录一下,持续更。。。

🚀一些常见的函数:

cat函数

torch.cat 用于拼接两个矩阵

import torch

x=torch.zeros(3)
y=torch.ones(3)
z=torch.cat((x,y),0)
print(z)
x=torch.zeros(3,1)
y=torch.ones(3,1)
z=torch.cat((x,y),1)
print(z)

在这里插入图片描述
不过这个只能用于tensor类型的拼接,numpy类的需要用到numpy.hstack或numpy.vstack,详看下文。

enumerate

enumerate是枚举,列出某一列的每一个数x2以及它们对应的序号x1。

y=list([11,22,33,44,55,66])
for x1,x2 in enumerate(y):
    print(x1,x2)

在这里插入图片描述

numpy.hstack/numpy.vstack
import numpy as np

a=[1,2,3,5]
b=[5,6,7,8]
c=np.vstack((a,b))
d=np.hstack((a,b))
print(c)
print(d)

在这里插入图片描述

plt.on/plt.off

可以显示出训练过程的所绘制图表的变化

plt.on

......     #(训练过程)

plt.off
randint函数

randint函数,可以在给定的范围内随机取一个或多个整数
random.randint() 只能取一个整数
numpy.random.randint() 可以通过设置取得多个整数

import random
import numpy as np

print(random.randint(1,20))  # 随机从0到20之间取1个数
print(np.random.randint(1,20,3))  # 随机从0到20之间取3个数

在这里插入图片描述

size函数

参数0表示查询行数,参数1表示查询列数

a=torch.zeros(2,3)
a[0,0]=1
a[0,1]=2
a[0,2]=3
a[1,0]=4
a[1,1]=5
a[1,2]=6
print(a)
y=a.size(1) # 0是行数,1是列数
print(y)
x=np.size(a,1)
print(x)
slice函数

slice函数,即切片函数,可以从已知数组中取部分连续的数据。

import torch

x=torch.linspace(0,9,10)
print(x)
slice1=slice(0,5,1)  # 在第1到第5个数中,步长为1,每个都取
slice2=slice(0,6,2)   # 在第1到第6个中,步长为2,每隔一个取一个
y=x[slice1]
print(y)
y=x[slice2]
print(y)

在这里插入图片描述

solve函数
from sympy import *
x= symbols('x')
print(solve(x**2+5*x+6,x))

在这里插入图片描述

sum函数

sum函数:对矩阵中的全部或部分元素进行求和

# 特定维度求和函数
y=torch.ones(2,3)
y[[0,0],[1,0]]=2
x1=torch.sum(y)  # 对全部元素进行求和
print(x1)
x2=torch.sum(y,dim=(0,1),keepdim=True)  # 对行和列的元素进行求和且不改变维度
print(x2)
x3=torch.sum(y,dim=(0,))   # 对各列进行求和,不保持原有维度
print(x3)
x4=torch.sum(y,dim=(0,),keepdim=True)  # 对各列进行求和,保持原有维度
print(x4)
x5=torch.sum(y,dim=(1,))  # 对各行进行求和,不保持原有维度
print(x5)
x6=torch.sum(y,dim=(1,),keepdim=True)  # 对各行进行求和,保持原有维度
print(x6)

在这里插入图片描述
也可以用属性sum对具体某一行或某一列进行求和

y=torch.ones(2,3)
y[[0,0],[1,0]]=2
print(y)
x4=y[0].sum()  # 对第1行进行求和
x5=y[1].sum()  # 对第2行进行求和
x6=y[:,0].sum()  # 对第1列进行求和
x7=y[:,2].sum()  # 对第3列进行求和
print(x4)
print(x5)
print(x6)
print(x7)

在这里插入图片描述

tensor函数

可以用tensor函数来定义数组

x=torch.tensor([[1,2,3],[4,5,6],[7,8,9]])
print(x)

在这里插入图片描述

zeros函数和ones函数也可以定义数组,

x=torch.zeros(2)
print(x)
x=torch.zeros(2,1)
print(x)

在这里插入图片描述

x=torch.ones(2)
print(x)
x=torch.ones(2,1)
print(x)

在这里插入图片描述

transpose

(1)torch.transpose(y,1,0) 表示第0维和第1维互换,比如对于一个二维数组,若换之前是2×3数组,换之后是3×2数组。

# 用transpose对数组进行维度互换
y=torch.zeros(2,3)
y[[0,0],[1,0]]=2
print(y)
x=torch.transpose(y,1,0)
print(x)

在这里插入图片描述
(2)对于三维数组,tensor.transpose(y,1,2) 表示第1维和第2维互换,变换之前是2×3×4数组,变换后是2×4×3数组。

y=torch.zeros(2,3,4)
y[[0,0],[1,0]]=2
print(y)
x=torch.transpose(y,1,2)
print(x)

在这里插入图片描述

Variable函数

把tensor定义为torch.autograd.Variable变量后,可以拥有autograd包中的属性,比如通过 .data 访问tensor中的所有变量;通过 .backward() 反向传播更新参数。

🚀一些常见的方法

1、给数组中的多个位置的值赋值
import torch

x=torch.zeros(4,4)
print(x)
x[[0,1,2,3],[0,1,2,3]]=8  # 给[0,0],[1,1],[2,2],[3,3]位置赋值8
print(x)

在这里插入图片描述

2、数组中冒号(:)的使用
import torch

x=torch.tensor([[1,2,3],[4,5,6],[7,8,9]])
print(x)

print(x[:,1])  # 只有冒号表全部,表示x的第2列
print(x[1,:])  # 表示x的第2行

print(x[:,0:1])  # 冒号前表示起,冒号后表示止,0到1其实打印的是第一例
print(x[1:2,:])  # 1到2,表示第2横
print(x[:,1:])  # 表示第2列起后的全部,在这里就表示第2列和第3列

print(x[:,-1:])  # 表示最后1列
print(x[:,:-1])  # 表示除最后1列的全部

print(x[:,-2:])  # 表示最后2列
print(x[:,:-2])  # 表示除最后2列的全部

在这里插入图片描述

3、对csv文件的读写
(1)创建一个csv文件并批量写入数据

首先需要在当前目录新建一个csv文件,
【File】→【New】→【File】,起文件名并把文件名后缀设置为 .csv 即可。
在这里插入图片描述
相比较与csv的操作,俺觉得用pandas对csv文件进行操作是比较简单方便的。

import torch
import pandas as pd

# 对csv文件进行写操作(用pandas)
with open('BDL2_testDataset.csv','w')as file:
    x=torch.linspace(0,500,101)
    x1 = torch.linspace(0, 500, 101)
    y=2*x
    data=pd.DataFrame({'x':x,'x1':x1,'y':y})
    data.to_csv(file)

# 对csv文件进行读操作(用pandas)
dt = pd.read_csv("BDL2_testDataset.csv")
dt.head()
data_set = dt.values
data_x=data_set[:,1:2].astype(float)
data_y = data_set[:,3:].astype(float)

print(data_x)
print(data_y)

在这里插入图片描述

(2)在csv文件中写入新的一行
import pandas as pd

df=pd.read_csv("testdataset_2.csv")
print(df)
print(' ')
df.loc[8]=[1,1,1,1]   # 对第8行写入新的数据
print(df)

在这里插入图片描述
Notice:
如果是刚创建的一个新的csv文件,里面什么都没有,此时写入会出错
给这个文件随便加个表头(手动在第一行写入一行)就就可解决这个问题

(3)读取某一行某一列或者某一个位置的数
import pandas as pd

df=pd.read_csv("testdataset_2.csv")
print(df)

x1=df.loc[2]  # 读取第3行数据
x2=df.loc[2,:]  # 读取第3行数据
x3=df.iloc[2,:]  # 读取第3行数据

x6=df.iloc[:,2]  # 读取第3列数据

x7=df.iloc[2,0]  # 读取第3行第1列数据


print(x1)
print(x2)
print(x3)
print(x6)
print(x7)

在这里插入图片描述
在这里插入图片描述

(4)删除一行并保存
df=pd.read_csv("testdataset_2.csv")
print(df)
df.drop([0],inplace=True)  # 删去第1行
print(df)
df.to_csv("testdataset_2.csv",index=False)  # 保存到文件中

在这里插入图片描述
Notice:
inplace=True 才能够删除成功;要用语句 df.to_csv写入到文件中,才能对文件进行改动,不然就只是改动了df而已

4、如何查看某一数据的类型
num1=20.0
num2=20
print(type(num1))
print(type(num2))

在这里插入图片描述

5、如何查看数组的维度
import torch

a=torch.ones(2,2,2)
print(a.ndim)

在这里插入图片描述

6、如何改变数组的维度

用reshape函数

import torch

a=torch.ones(4)
print(a)
print(a.ndim)
a=a.reshape(1,-1)
print(a)
print(a.ndim)

在这里插入图片描述

7、如何表示幂次方(python)
a=2**3
print(a)

在这里插入图片描述

8、如何查看某一个函数或训练过程花费的时间
        print("Start train...")
        start = time.perf_counter()
        self.train(cases, labels, 200, 0.08, 0.1)
        end = time.perf_counter()
        print("Training complete! Time used: %.2f s"%(end - start))

在这里插入图片描述

🚀关于anaconda

我对anaconda的理解就是这是一个管理环境的工具(python工程都需要运行在一定的),每一个环境都有特定的python版本、以及一定的库。

一些常用的命令:
关于环境管理:
1、创建一个新的环境(python版本为3.9.0):

conda create -n EnvieonmentName(自定义环境名) python==3.9.0

2、查看当前已创建的环境

conda env list

3、激活已创建的环境

activate EnvironmentName(具体的环境名)

4、删除已创建的环境

conda create -n EnvieonmentName(自定义环境名) --all

关于环境中包的管理:
1、下载某一个包(库)

pip install PackageName(具体的包名)

下载具体版本的包

pip install PackageName(具体的包名)=1.2.0

2、查看某一环境中已下载的包
先激活该环境,然后

conda list

3、查看某一包的具体信息:

pip show PackageName(包的具体的名字)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值