
4.2.2 创建一个数组
在NumPy库里,用n维数组的形式来表示一个n维矩阵。首先,可以用Python的常规类型(列表或者元组)来创建一个一维数组,示例如下:

输出结果:

可见,用元组和列表创建的矩阵b和矩阵a,结果都是一样的,print(a==b)也证明了这一点。当然,也可以用迭代的方式快速创建,示例如下:

输出结果:

这里的arange()方法实际上是NumPy库重写了Python原来的range()方法,它们要完成的工作是一样的。reshape()用于“重塑”,它默认操作的对象是一维的(即使它本身是一维或者多维的,也认为它是一维的,或者说把操作对象先转化成一排排的数字,不计它的维度)。下面按照reshape(n,m)括号里给出的n行m列进行“重塑”操作,示例如下:

输出结果:

arange()方法只是类似于range()方法迭代整型变量的情况,若要迭代浮点数,则需要使用linspace()方法,示例如下:

输出结果:


可以看到,linspace()方法并不是简单地替代arange()方法,arange(0,53,3)的意思是从0到53以3为间隔进行迭代;而linspace(0,53,3)的意思是从0到53,化为3段。所以只有改成linspace(0,53,18)才可以得到想要的结果。需要注意的是,reshape(3,-1)将这行数重塑为3行n列,这出现在列数较多且不清楚有几列的情况下。
在生成矩阵(n维数组)时可以使用dtype参数指定数据类型,dtype默认是整型,如下输出的是整型、浮点型和复数型:

输出结果:

当然还有其他迅速生成矩阵的方法,例如,用zeros()方法生成“零矩阵”;用ones()方法生成“全一矩阵”;用empty()方法生成“随机浮点数矩阵”。另外,还有快速生成数学的指数e的大小和圆周率π的大小的方法。示例如下:

输出结果:

可以看到,np.exp(n)实际上输出的是en,当n=1时,e的数值约为2.718 281 828 459 045。
在显示较长的矩阵时会用省略号省去,示例如下:

输出结果:

该示例输出了一个1000行1000列的矩阵。