numpy是机器学习中非常重要和基础的软件包,它提供了机器学习中基本的数据结构(向量)的各种高效操作。本系列记录我在学习过程中的一些心得。
基础概念
首先,numpy中操作的基本对象是向量,向量类似于编程的数组。向量有几个非常重要的基本概念,必须要搞清楚,否则后面对向量的各种操作都很难理解。
维度(dimension)
我们来看几个例子:
对于一维向量a = [1,2,3,4]
(可理解为数组),我们要找到其中的一个元素使用a[i],只需要指定一个索引就够了,比如a[0] = 1
。
对于二维向量(可理解为矩阵),找到其中的一个元素需要至少两个索引,比如a[0][0] = 1
。
[ |
维度的直观理解是:找到向量中的一个元素所需要索引数量的最小个数。
axis
numpy中的很多函数都有axis这个参数,所以axis也非常有必要理解清楚。 axis可以认为是对维度的索引(从0开始)。axis=0,表示第1维,依次类推。axis=-1表示最高的维度。结合上面shape的理解中,axis=0表示向量中的最外层,axis=-1表示向量中的最里层。后面结合具体的函数再细讲。
shape
shape的中文意思是形状,它表示的是向量在各个维度上元素的个数。
一维向量[1,2,3]
,它的维度是1维,shape是(3,)。向量(1,2,3,4),它的维度也是1维,但它的shape就是(4,)。
上面的二维向量,它的维度是2,shape是(2, 3)。2是怎么来的?假如把最外层的[]去掉,我们得到两个一维向量,所以第1维的shape是2。类似的,3是第二层中向量元素的个数。
对于N维向量,它的shape可以从最里层开始看起。最里层[]中的元素个数就是shape中最右边的那个值。然后将最里层的向量看成一个数字,以此类推。
size
size表示向量中有多少个元素,也就是shape的各个值相乘。
简单总结一下,dimension表示这个向量有几层中括号,shape表示每层有多少个元素,axis指的哪一层。这个定义不准确,只是帮助理解。
向量的创建
在python中,我们知道[1, 2, 3]
是一个list。numpy中向量虽然也写成这样的形式,但是向量和python中的list不是等同的。表示向量的类是ndarray。
刚开始可能不太理解Numpy中array和ndarray的区别,numpy中没有array类,只有array()方法。通过array()方法,我们可以将python的list转成ndarray。
例子
>>> import numpy as np |