np.array可以从python列表创建数组:
创建整型数组:
In [6]: np.array([1,4,2,5,3])
Out[6]: array([1, 4, 2, 5, 3])
跟python列表 不同的时,Nunpy要求数组必须包含同一类型的数据。如果类型不匹配,Numpy将会隐式的转换。
In [7]: np.array([3.14,4,2,3])
Out[7]: array([3.14, 4. , 2. , 3. ])
上面的整型被转换成了浮点型。
如果希望明确设置数组的数据类型,可以用dtype 关键字:
In [8]: np.array([1,2,3,4], dtype='float32')
Out[8]: array([1., 2., 3., 4.], dtype=float32)
也可以创建多维数组:
In [9]: np.array([range(i,i+3) for i in [2,4,6]])
Out[9]:
array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])
注意,这里的range(i,i+3) 并不等同于一个列表,而是一个 range对象,但是他是可迭代的,所以array数组在生成数据时,自动迭代获取了相关数据。
也可以用 Numpy 的内置方法从头创建数组是一种更高效的方法。
创建一个长度为10的数组,数组的值都是0:
In [13]: np.zeros(10, dtype=int)
Out[13]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
创建一个3*5的浮点型数组,数组的值都是1
In [14]: np.ones((3,5), dtype=float)
Out[14]:
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
创建一个3*5的浮点型数组,数组的数值都是3.14
In [15]: np.full((3,5),3.14)
Out[15]:
array([[3.14, 3.14, 3.14, 3.14, 3.14],
[3.14, 3.14, 3.14, 3.14, 3.14],
[3.14, 3.14, 3.14, 3.14, 3.14]])
创建一个线性序列数组,从0开始,20结束,步长是2:
In [16]: np.arange(0,20,2)
Out[16]: array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
创建一个5个元素的数组,这5个数均匀地分配到0~1
In [17]: np.linspace(0, 1, 5)
Out[17]: array([0. , 0.25, 0.5 , 0.75, 1. ])
创建一 个3*3的,在0~1 均匀分布的随机数组成的数组
In [18]: np.random.random((3,3))
Out[18]:
array([[0.49794033, 0.21021487, 0.58525192],
[0.35517336, 0.62095702, 0.08306016],
[0.77282231, 0.89984311, 0.16947136]])
创建一个3*3, 均值 为0,标准差为1的正态分布的随机数数组
In [19]: np.random.normal(0,1,(3,3))
Out[19]:
array([[-1.22430636, -0.61128796, 0.00432618],
[-0.21534065, -0.26496596, 0.98739882],
[-1.90585908, 1.49111415, -0.03400582]])
创建一个3*3的,[0,10) 区间的随机整型数组
In [20]: np.random.randint(0, 10, (3,3))
Out[20]:
array([[5, 3, 8],
[7, 4, 6],
[5, 7, 1]])
创建一个3*3的单位矩阵
In [21]: np.eye(3)
Out[21]:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])