最近在看源码的时候,碰到了一些大佬们常用,但自己暂时还没用过的numpy函数,特意来总结下。
np.meshgrid()
该函数的功能是将两个一维向量转化成矩阵,具体看代码:
先做个初始化
然后传入参数得到输出
可以直观的看出,x1的行是x,x2的列是y,x1、x2矩阵大小为(x1的大小,x2的大小)。但是具体有什么用呢?等介绍完下面一个函数再详细解释哈。
np.ravel() vs np.flatten()
功能是一样的,都是将多为数组降为一维。具体区别上代码:
继续用上面代码中的数据:
可以看出都将各自的矩阵摊开了,那么区别呢?一般情况下,两者功能看起相同,其实区别肯定是内部处理的细节不同,而在这样的情况下,我们应该能猜出来,肯定一个是copy出来的,一个不是。那么我们用代码来证明:
很容易看出flatten是copy,而ravel是在源数据上进行操作的。
但是meshgrid()和该函数有什么关系呢?当然没啥直接关系,但是在做项目中或者做科研中需要绘画方格图,那么这俩一搭配,完美获得我们想要的数据:
r中表示x(或y)轴数据,f表示y(或x)轴数据,就能简单获得方格状数据。当然这个也能用其他方法做,但是看到大牛是这样做的,感觉还是需要学一学。
np.where()
1.就是查找满足条件值的坐标,见代码(参数一个值):
2.满足条件值时,输出不同的数据,见代码(参数三个值):
满足条件用参数0替换,不满足用参数1替换。
np.c_ and np.r_
np.c_是和np.r_感觉还是直接看代码吧:
是不是一目了然?
更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!