关于np.size函数的研究
事情的经过是这样的。
我想判断numpy生成的一组array数组的大小,我就想着看能不能找到一个np.size()函数来应用。结果通过查阅文档发现numpy中拥有size()方法的由很多种,如numpy.ma.size(),numpy.ndarray.size(),numpy.generic.size(), numpy.matrix.size()
等等,可就是没有numpy.size(),这就让人很难受的了,而且在doc里面没有找到就算了,可是这个numpy.size()竟然可以使用。
既然numpy.size()可以使用,那么我就去找它的源文档,按ctrl+右键发现size无法转到定义,numpy的__init__.py文件也没有找到size方法。
通过 dir(numpy)可以发现是由size方法的,但是为什么转不到定义不太清楚,那我就找一个可以转到的呗,我发现numpy.insert()可以转到定义,出现一个__init__.pyi文件,在这里我找到了size方法的来源,from numpy.core.fromnumeric import {………size………},原来size是从fromumeric这个模块来的,那我在点进去看,里面清清楚楚的定义这size函数,到此就发现了,原来numpy.size函数是从其他模块导进来直接使用的。
反过来,我又去查询numpy.ma.size方法的定义,好家伙,直接跳到core.size的定义上了,而core.size最有趣的是,直接return np.size,这下我明白了,其实他们一直在套娃,套的都是core.fromnumeric的娃。
但是这个core.fromnumeric在doc文档中也不会具体给出什么,仿佛其就是底层一样,被上层任意调用即可,就算解释也只是解释上层调用函数的使用方法。
初学,不是很懂这样设计的优点,但是确实容易头大,本来numpy.size()确实能搞定,但是doc中又不给出这样的方法。