首页 > 代码库 > 【Python实战15】NumPy数组的创建

【Python实战15】NumPy数组的创建

NumPy提供了一个N维数组对象,即:ndarray。ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。


创建ndarray数组

创建数组最简单的方式就是使用array函数,它接受一切序列型的对象,然后产生一个新的含有传入数据的NumPy数组。如下:


嵌套的序列将会被转换为一个多为数组:


除非显示的说明,np.array会尝试为新建的这个数组推断出一个较为合适的数据类型,我们可以通过dtype来进行查看,比如上面刚建立的数组类型为:int32类型;另,我们可以通过shape属性来查看当前数组各个维度的大小。

除了np.array之外,另一些函数也能提供数组的创建,比如:zeros和ones分别可以创建指定长度并且内容全为0或者1的数组。如下:
可以通过np.zeros创建内容全为0的数组:


也可以通过ones创建一个内容全为1的数组:


也可以通过empty函数创建一个三维数组:

empty函数并不会返回全是0的数组,所以想要通过empty函数创建一个元素全是0的数组是不安全的。

另,可以通过arange函数创建在某个数范围内的数组:



ndarray的数据类型

dtype是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息,我们可以通过dtype来制定当前新建数组的类型:


在NumPy中提供了多种数据类型:比如int8/uint8,int16/uint16,int32/uint32等等;我们可以通过astype方法来显式地转换一个数组的类型:



在上面的例子中将整型转换为了浮点型。如果将浮点型转换为整型的话,则小数部分会被截断:


如果一个字符串中都是数字的话,我们也可以将其转换为数值形式:


我们还可以通过一个数组的类型来指定另一个数组的类型:



数组和标量之间的运算

数组很重要,因为它不用编写循环即可对数据进行批量计算。这通常叫做矢量。大小相等的数组之间的任何算术运算都回将运算应用到各个元素上。


同样,数组与标量之间的算术运算也会将那个标量值传播到各个元素: