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

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的源码

 

 

posted @ 2020-08-27 15:08  绍荣  阅读(106)  评论(0编辑  收藏  举报