初学Numpy,记录一下自己对Numpy一些操作的理解,避免过后忘了orz
(文笔不好尽请谅解orz,如果有错误的地方还请各位帮忙纠正,谢谢~)
教程网站:Numpy快速上手指南 --- 基础篇 https://www.kesci.com/home/project/59ed832d18ec724555a9a968
Numpy快速上手指南 --- 进阶篇 https://www.kesci.com/home/project/59f0380e18ec724555ac7e0b
这100道练习,带你玩转Numpy https://www.kesci.com/home/project/59f29f67c5f3f5119527a2cc
函数使用查询,这个blog总结的挺好:http://www.cnblogs.com/WSX1994/articles/9061516.html
基础篇和进阶篇两个网站都例举了一些Numpy常用的操作和示例代码,讲解的也是不错的,当然对于一个库来说,方法是例举不完的,还是得靠平时实际操作时学习。
一、基础篇
1、Numpy中维度(dimensions)叫做轴(axis),轴的个数叫做秩(rank)
这个秩跟线性代数中的秩貌似不是一个概念的东西,这里的秩指的是Numpy中的维度,如下数组
[ [ 1., 0., 0.],
[ 0., 1., 2.] ]
就是一个二维的,即有两个轴,第一个维度的长度为2,第二个维度的长度为3,可以理解成是数学上的xy轴,同样如果是三维的话就是xyz轴了。
在numpy的运算中,有时候还是会接触到要分axis的运算的,数清轴的个数也是很重要的,可以通过数左边 “[” 的个数来确认,如上述的数组就有两个 “[” ,即axis=2。当然也可以用ndarray.ndim来获取(ndarray是numpy的array类型)。而对于有关axis的运算,如np.sum(axis=0)或np.sum(axis=1)等,还需要通过操作才能加深理解,后续会有相关例子的讲解
2、* 和 dot
两个矩阵在python直接 “*” 的话仅仅只是数值上对应相乘,要实现矩阵乘法的话需要用到np.dot(),矩阵乘法需要满足的条件在线性代数中也是有讲述的。
3、 upcast
当运算的是不同类型的数组时,结果数组向精度更高的数组看齐,即int64的数组与float64的数组相加后得到的数组是float64类型的数组
4、np.linspace(a,b,c)
从a到b平均分成c份
5、ndarray.sum(axis=?)