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