首先推荐Numpy官方的教程,网址。
很多人会对数组创建函数的参数中什么时候要用括号np.zeros((2, 3)),什么时候不用括号np.eye(3, 5)感到疑惑,这里对它们统一进行梳理。(按照官方文档的分类方法)
1. 一维数组创建函数
最常用的是np.arange()和np.linspace():

两者都有开始start和结束stop,区别是arange有步长step而linspace有数目num。
实践上,遇到整数时使用np.arange(),遇到浮点数时由于np.arange()会由于舍入误差使得右端取值不确定(左闭右开或左闭右闭),所以会使用np.linspace()。
2. 二维数组创建函数
二维数组创建函数,常用的是三个:单位矩阵np.eye()、对角矩阵np.diag() 和三角矩阵np.tri()
>>> np.eye(3)
array([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])
>>> np.eye(3, 5)
array([[1., 0., 0., 0., 0.],[0., 1., 0., 0., 0.],[0., 0., 1., 0., 0.]])>>> np.diag([1, 2, 3])
array([[1, 0, 0],[0, 2, 0],[0, 0, 3]])
>>> np.diag([1, 2, 3], 1)
array([[0, 1, 0, 0],[0, 0, 2, 0],[0, 0, 0, 3],[0, 0, 0, 0]])
>>> a = np.array([[1, 2], [3, 4]])
>>> np.diag(a)
array([1, 4])>>> np.tri(3, 5, 2, dtype=int)
array([[1, 1, 1, 0, 0],[1, 1, 1, 1, 0],[1, 1, 1, 1, 1]])
注意np.eye()在指定行和列时是不需要加括号的,详细看下文。
3. 一般 ndarray 创建函数
常用的有:全0数组np.zeros()、全1数组np.ones()、空数组np.empty() 、填充数组np.full()。每种函数都有对应的_like函数,传入某个数组就可以参考数组的shape进行构建。创建一维数组的例子如下:

注意生成的一维数组的shape是(3, ),在矩阵乘法中相当于行向量(1, 3),但是不能像行向量那样进行转置。

创建二维数组的例子如下:

留意到只有np.eye()是不加括号的,其他的都要加括号。这是因为np.zeros()、np.ones()等传入的第一个参数是shape,而第二个参数是dtype,如果不加括号则会把第一个逗号后的数字误认为是dtype;np.eye()的第二个参数则不是dtype,而是可选的M,所以第一个逗号后的数字是M。

最后是用随机数创建数组,建议用新的写法,因为更快:
