Conda、pip、Python、Latex、Linux零碎技巧

Conda、pip、Python、Latex、Linux零碎技巧

Conda、pip

  • conda create -n B --clone A 克隆A环境为B
  • opencv安装,请参考pypi官网说明
  • mmcv-full使用pip安装时编译出错,需安装当前虚拟环境pytorch对应的cuda的NVIDIA官网版本,并确认系统环境变量CUDA_PATH指向该版本(安装程序会自动设置,一般不需要手动修改)
  • conda命令行换盘符d:,在任意路径下输入目标盘符加冒号,即可更换到目标盘的根目录下

Python

  • with关键字:代替try-finally,用于处理文件,释放资源

  • for line in f: print line :通过迭代器访问文件每一行。

  • shape

    • (3,1)二维数组,三行一列
    • (3,)一维数组,长度位3
  • pandas.DataFrame.values不如使用pandas.DataFrame.to_numpy,DataFrame转numpy

  • Python 类内方法

    class Test():
        a = 20
        _b = 21
        # 类外无法访问,类内可以通过类名或对象(self等)访问
        __c = 22
    
        def __init__(self):
            # 类内类外都无法通过类名访问,类内可通过对象(self等)访问
            self.aa = 10
            self._bb = 11
            # 类外无法访问
            self.__cc = 12
    
        @classmethod
        def cls_method(cls):
            print("class")
    
        # 参数不需要加 self
        @staticmethod
        def sta_method():
            print("static")
    
        # 类调用需要显式传对象参数
        def obj_method(self):
            print("object")
    
        # 类调用需要显式传对象参数
        def _pri_method(self):
            print("protect")
    
        # 类外无法访问,类内可以用类名或对象(self等)访问
        def __pri_method(self):
            print("private2")
    
        # 通过类名或对象(self等)调用所有函数
        def in_method(self):
            print("in==>")
            test_in = Test()
    
            Test.cls_method()
            Test.sta_method()
            Test.obj_method(test_in)
            Test._pri_method(test_in)
            Test.__pri_method(test_in)
            print(Test.a)
            print(Test._b)
            print(Test.__c)
            # print(Test.aa)  # 错误
            # print(Test._bb)  # 错误
            # print(Test.__cc)  # 错误
    
            test_in.cls_method()
            test_in.sta_method()
            test_in.obj_method()
            test_in._pri_method()
            test_in.__pri_method()
            print(test_in.a)
            print(test_in._b)
            print(test_in.__c)
            print(test_in.aa)
            print(test_in._bb)
            print(test_in.__cc)
    
            self.cls_method()
            self.sta_method()
            self.obj_method()
            self._pri_method()
            self.__pri_method()
            print(self.a)
            print(self._b)
            print(self.__c)
            print(self.aa)
            print(self._bb)
            print(self.__cc)
            print("<==in")
    
    
    test = Test()
    
    Test.cls_method()
    Test.sta_method()
    Test.obj_method(test)
    Test._pri_method(test)  # 警告
    # Test.__pri_method()  # 错误
    print(Test.a)
    print(Test._b)
    # print(Test.__c)  # 错误
    # print(Test.aa)  # 错误
    # print(Test._bb)  # 错误
    # print(Test.__cc)  # 错误
    
    Test.in_method(test)
    
    test.cls_method()
    test.sta_method()
    test.obj_method()
    test._pri_method()  # 警告
    # test.__pri_method()  # 错误
    print(test.a)
    print(test._b)
    # print(test.__c) # 错误
    print(test.aa)
    print(test._bb)
    # print(test.__cc)# 错误
    
    test.in_method()
    
  • 按最后一列groupby

    # 先排序
    train_draw = train_draw[train_draw[:, -1].argsort()]
    # 后分割
    train_draw = np.array(np.split(train_draw, np.unique(train_draw[:, -1], return_index=True)[1][1:]))
    
  • 函数静态类型定义,:后表示形参类型,->后表示返回类型

    def fun(a: int) -> int:
        return a + 1
    
  • linux切割路径字符串os.path.dirname(path).split('/')[-1]/the/input/path得到path

  • windows切割路径字符串os.path.dirname(path).split('\\')[-1]\the\input\path得到path

  • 预训练模型下载缓慢可以将以下代码

    model = torch.hub.load('facebookresearch/detr', 'detr_resnet50', pretrained=True)
    model.eval()
    

    替换为如下形式,二者等价,需要手动git克隆仓库并参照hubconf.py文件中的函数,下载并加载权重

    model = torch.hub.load('./detr', 'detr_resnet50', pretrained=False,source='local')
    model.load_state_dict(torch.load('detr-r50-e632da11.pth')["model"])
    model.eval()
    

Latex

  • 拖式计算,对齐等号

    & 对齐标志
    \\ 换行(必须有换行,否则对齐无效)
    
    $$
    \begin{aligned}
    CPU时间&=(CPU执行周期数+存储器停顿周期数)*时钟周期时间\\
    &=(CPU执行周期数+访存次数*不命中率*不命中开销)*时钟周期时间\\
    &=IC*(CPI_{execution}+每条指令平均访存次数*不命中率*不命中开销)*时钟周期时间
    \end{aligned}
    $$
    

    C P U 时间 = ( C P U 执行周期数 + 存储器停顿周期数 ) ∗ 时钟周期时间 = ( C P U 执行周期数 + 访存次数 ∗ 不命中率 ∗ 不命中开销 ) ∗ 时钟周期时间 = I C ∗ ( C P I e x e c u t i o n + 每条指令平均访存次数 ∗ 不命中率 ∗ 不命中开销 ) ∗ 时钟周期时间 \begin{aligned} CPU时间&=(CPU执行周期数+存储器停顿周期数)*时钟周期时间\\ &=(CPU执行周期数+访存次数*不命中率*不命中开销)*时钟周期时间\\ &=IC*(CPI_{execution}+每条指令平均访存次数*不命中率*不命中开销)*时钟周期时间 \end{aligned} CPU时间=(CPU执行周期数+存储器停顿周期数)时钟周期时间=(CPU执行周期数+访存次数不命中率不命中开销)时钟周期时间=IC(CPIexecution+每条指令平均访存次数不命中率不命中开销)时钟周期时间

  • acmart class下的tex包的baselinestretch问题

    \let\savedbaselinestretch\baselinestretch
    \usepackage[UTF8]{ctex}
    \let\baselinestretch\savedbaselinestretch
    

Linux

  • 根据进程号查看命令运行文件的路径pwdx PID
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶涟风不息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值