天天看点

NumPy快餐教程(2) - 多维数组进阶NumPy快餐教程(2) - 多维数组进阶

上一讲我们介绍了ndarray的形状变化和生成方法,这一节我们继续讨论多维数组的使用方法。

NumPy中使用[]方括号来访问元素。如果是一维数组,就用下标数字,例如a[1],如果是多维数组,就在方括号中使用元组tuple,例如a[(2,3,4)]

例:

用一个值采用方括号下标方式引用,而如果想要引用多个值的话,可以考虑做一个切片。比如s[1:3]就是由s[1]和s[2]组成的列表:

多维的切片也是同理,比如我们从一个3x3x3的立方体中切出一个2x2x2的小立方体:

请注意,切片的语法不用元组,直接在方括号里切就好了。

另外,切片可以使用负数做下标,-1就是右数第一个元素。最左和最右都可以不写,比如从1到最右,可以写成a[1:]

在前面的学习中,我们并不在意数据类型,一样也可以使用多维数组。但是,有了类型之后,数组可以更方便和更快速的操作。

我们前面所学习的生成数组的方法,其实都可以默认带一个dtype参数。

类型值常用的有int32, int64, uint32, uint64, float32, float64, complex64, complex128等。因为NumPy是个数学库,精确的类型对于提高计算速度是很有益的。

数据只有可以计算才有价值。我们学会了生成数组,访问数组,下一步就是如何对数组进行计算。

NumPy提供了大量的针对数组进行运算的函数,比如X是一个数组,np.sin(X)可以对数组中每一个元素都进行sin运算。

这是一行的,多行的也照样管用,我们看个例子:

数组之间支持加减乘除,乘方,取余。

例:给一个数组的每个元素都乘以2

两个数组之间做加法:

不但算术运算可以做,也可以针对整个数组做比较大小运算。

除了对每个元素进行计算,我们还可以对这些元素进行汇总,比如求和sum,求平均值mean等。

除了前面所讲的多维数组,NumPy还提供了矩阵类matrix. matrix的默认运算都是矩阵运算。

例:

矩阵的逆阵,就可以直接用X**-1来表示。