Numpy是科学计算当中最常用的python工具库之一,是很多工具库的基础,掌握Numpy的一些基本概念对科学计算有很大的帮助,下面我们就来简单聊一聊Numpy吧。
这一节里我们主要讲一讲,Numpy里最主要的数据类型ndarray,它也称作array。(这里需要敲一下小黑板啦!numpy.array可和python标准库中的array不是一回事哦,它可比标准库里的array多了许多属性呢。)在Numpy里,ndarray是由同一类型的小伙伴(主要为数据类型的)构成的一个类似于表的数据结构(暂且这么称呼吧)。假如这群小伙伴存在于N维空间中,那么就有一个N维的数据结构,Numpy中把维度称为轴(axes,就像平面坐标系里的X轴、Y轴),轴的数目被称为阶(rank),它刻画了这群小伙伴存在空间的维度。
首先,我们看看ndarray这个东西怎么创建呢?
例如,[[1,0,2],[2,3,4]]
这就是一个2*3的ndarray数组,Numpy里用方括号表示ndarray。
最简单的创建ndarray的方法是用如下命令:
np.array([1,2,3]) #创建ndarray
np.zeros((3,4)) #创建3*4的元素都为0的ndarray
#np.ones()和np.empty()也是创建ndarray的方法,参数和np.zeros()相同,用(row, col)表示其规模.
第二,我们看看ndarray的索引index
在Numpy里ndarray的索引是从0开始的,这点要牢记,以免产生越界错误哦。
>>a = np.array([0, 1, 8, 27, 64, 125, 216, 343, 512, 729])
>>a[2]
8
>>a[2:5]
8,27,64 #这个地方要注意,它相当于索引[2,5),是不包括a[5]的哦
对于多维数组,索引时用逗号","分隔索引序数,
>>b = np.array([[1, 2, 3], [4, 5, 6]])
>>b[0,0]
1
>>b[ : , 1] #取第二列所有的数
[2, 5]
>>b[1, 1:3] #取第二,第二、三列的数
[5,6]
第三,规模的改变
Numpy提供了reshape函数,可以修改ndarray的规模。
比如,
>>a = a = np.array([1,2,3,4,5,6])
>>c = a.reshape((2,3))
[[1,2,3],[4,5,6]]
第四,基本运算
Numpy提供了矩阵相关的基本运算功能。
a = [[1,2,3],[4,5,6]]
b = [[1,2],[3,4],[5,6]]
>>np.dot(a, b) #矩阵乘法,两个矩阵规模为(n,m)和(m,k)
>>a * a #数组对应元素相乘,*两边矩阵规模必须一致
>>a + a #数组对应元素相加,*两边矩阵规模必须一致