关于numpy中的 np.c_函数
来源:12-3 使用信息熵寻找最优划分
蜉蝣扶幽
2018-12-09
波波老师你好,
请问下波波老师为什么 np.c_[a, b], 可以运行,但 np.c_(a, b) 却报错了?而且 np.c_([a, b]) 也报错了。
用help()查了文档,如下
还是有些模糊,为什么 np.c_ 这么特殊,后面跟 [], 而不是()
写回答
1回答
-
赞问题!:)
因为np.c_不是一个函数,所以调用方式不是np.c_();
np.c_是一个类(list也是一个类),在这个类中,使用__getitem__重载了[]。
如果你购买了我的线性代数课,我们自己实现的Vector也会用在这种方法支持某一个Vector类的对象vector的这种调用,如:vector[666]:)
更具体的,np.c_继承了AxisConcatenator类,__getitem__的实现实际是在AxisConcatenator类中。
如果有兴趣可以参考AxisConcatenator的源码。(是的!numpy是开源的!)
传送门:https://github.com/numpy/numpy/blob/master/numpy/lib/index_tricks.py
300行开始是AxisConcatenator的实现;
316行开始定义了__getitem__;
520-549定义了np.c_
另外,值得一提的是,实现np.c_的这个文件,叫index_tricks.py,是不是很有意思?:)
加油!:)
30
相似问题