关于numpy中的 np.c_函数

来源:12-3 使用信息熵寻找最优划分

蜉蝣扶幽

2018-12-09

波波老师你好,
图片描述
请问下波波老师为什么 np.c_[a, b], 可以运行,但 np.c_(a, b) 却报错了?而且 np.c_([a, b]) 也报错了。
用help()查了文档,如下图片描述
还是有些模糊,为什么 np.c_ 这么特殊,后面跟 [], 而不是()

写回答

1回答

liuyubobobo

2018-12-09

赞问题!:)


因为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,是不是很有意思?:)


加油!:)

3
0

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程