• 随手查_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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述
    不过这个只能用于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)
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    plt.on/plt.off

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

    plt.on
    
    ......     #(训练过程)
    
    plt.off
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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个数
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    solve函数

    from sympy import *
    x= symbols('x')
    print(solve(x**2+5*x+6,x))
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述
    也可以用属性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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    tensor函数

    可以用tensor函数来定义数组

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

    在这里插入图片描述

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

    x=torch.zeros(2)
    print(x)
    x=torch.zeros(2,1)
    print(x)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    x=torch.ones(2)
    print(x)
    x=torch.ones(2,1)
    print(x)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    (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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    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列的全部
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    (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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    (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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

    (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)  # 保存到文件中
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    4、如何查看某一数据的类型

    num1=20.0
    num2=20
    print(type(num1))
    print(type(num2))
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    5、如何查看数组的维度

    import torch
    
    a=torch.ones(2,2,2)
    print(a.ndim)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    6、如何改变数组的维度

    用reshape函数

    import torch
    
    a=torch.ones(4)
    print(a)
    print(a.ndim)
    a=a.reshape(1,-1)
    print(a)
    print(a.ndim)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    7、如何表示幂次方(python)

    a=2**3
    print(a)
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    2、如何选择Spring cloud 的版本?
    apt安装yum
    [paper] lift,splat,shooting 论文浅析
    Java并发编程之ReentrantLock重入锁原理解析
    港联证券:上涨过程缩量下跌意味着什么意思?
    RK3566添加LED
    MMDeploy部署实战系列【第五章】:Windows下Release x64编译mmdeploy c++SDK,对TensorRT模型进行推理
    DOM--页面渲染流程
    MySQL查询常见错误及其解决方法
    SecXOps 技术发展趋势
  • 原文地址:https://blog.csdn.net/Jessaly/article/details/125612405