• 从树回归中学习到的编程技巧


    1 代码分析

    dataSet[nonzero(dataSet[:,feature] <= value)[0],:][0]

    大的方向是取矩阵中的第一行

    根据[行:列]获取子矩阵

    那么:nonzero(dataSet[:,feature] <= value)[0]

    就是行的索引值,而nonzero对矩阵操作会返回行数组和列数组,此处取[0],表示获取行数据

    而:dataSet[:,feature] <= value,就是获得所有行且某一列布的布尔矩阵

    最终解释:首先获得feat列中元素小于等于value所在的行索引数组和列索引数组,然后取行索引数组,然后获取dataSet矩阵中行索引数组所对应的数据构成新矩阵,最后获得新矩阵的第一行并构成新矩阵。

    2.类的成员函数如何成为成员函数的参数

    若想让成员函数成为另一个成员函数的参数,只需要赋值成员函数的名字就可以,但是要主要,作为参数在函数内调用时,必须添加上self,代码示例:

    class A:
        def func1(self, name):
            print('name', name)
       def work(self, name):
         print('{0} {1}'.format(name, 'is working.'))
    def func2(self, func=func1): func(self, '张三') if __name__ == '__main__': a = A() a.func2()
      
      a.func2(A.work) # 这里需要使用类作为限定名,即引用的是类的函数
    --------------------- 结果: name: 张三

    3. 字典的妙用

    利用字典,可以构建树,这样就不需要像强类型的语言那样构建一个类啦。在进行递归操作时,非常有用。

    4.路径

    ./ 当前目录,可以省略

    ../ 上一级目录

     也可以将目录添加到系统中

    import sys
    sys.path.append('./lib')
    ----
    表示将当前目录中的lib目录添加到系统中,那么包lib中的模块就可以使用import引入了。
    前提,lib包中有__init__.py模块,该模块可以是空文件,若是有函数的话,就是指该包
    中的全局函数

    相对路径,都是针对其实文件所在的目录而言

    参考:https://blog.csdn.net/xiongchengluo1129/article/details/80453599

    该参考中 有详细的记载

     5.Python的GUI标准工具Tkinter

    Python GUI编程(Tkinter)

    为什么很多Python开发者写GUI不用Tkinter,而要选择PyQt和wxPython或其他?

    Python-GUI-Programming-Cookbook-Second-Edition的源码

  • 相关阅读:
    Spring中的Type学习
    Spring发布监听机制
    BeanFactory父子容器的知识
    Spring中自动创建代理器
    ProxyConfig属性详解
    BeanFactoryAdvisorRetrievalHelper:从Bean工厂检索出Advisor们
    代理机制
    Spring AOP组件
    @Value的使用
    BeanPostProcessor原理--使用讲解
  • 原文地址:https://www.cnblogs.com/gwzz/p/13571542.html
Copyright © 2020-2023  润新知