其它创建 numpy.array 的方法
创建值全为 0 的 ndarray 数组
- numpy.zeros(shape, dtype) - 创建值为 0,形状为 shape,类型为 dtype 的ndarray 数组
In [1]: import numpy as np
In [2]: np.zeros(10)
Out[2]: array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
In [3]: np.zeros(10).dtype
Out[3]: dtype('float64')
In [4]: np.zeros(10, dtype = int)
Out[4]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
In [5]: np.zeros((3, 5))
Out[5]: array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
In [6]: np.zeros(shape = (3, 5), dtype = int)
Out[6]: array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
创建值全为 1 的 ndarray 数组
- numpy.ones(shape, dtype) - 创建值为 1,形状为 shape,类型为 dtype 的ndarray 数组
In [7]: np.ones((3, 5))
Out[7]: array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
创建值全为指定值的 ndarray 数组
- numpy.full(shape, fill_value, dtype = None) - 创建值为 fill_value,形状为 shape 的ndarray 数组
In [8]: np.full((3, 5), 666)
Out[8]: array([[666, 666, 666, 666, 666],
[666, 666, 666, 666, 666],
[666, 666, 666, 666, 666]])
Notes: zeros 和 ones 函数创建的数组默认为浮点型,而 full 函数 dtype 默认为 None 类型,所以如果在使用 full 不指定 dtype 的情况下,默认为传入 fill_value 值的类型。
arange
- numpy.arange([start, ]stop, [step, ]dtype=None)
arange 和 python 中内置的 range 函数非常像。
代码语言:javascript复制In [9]: [i for i in range(0, 20, 2)]
Out[9]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
In [10]: np.arange(0, 20, 2)
Out[10]: array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
不过 arange 函数中的 step 可以为浮点数,而 python 内置的 range 函数则不能。
代码语言:javascript复制In [11]: [i for i in range(0, 1, 0.2)]
Out[11]: TypeError: 'float' object cannot be interpreted as an integer
In [12]: np.arange(0, 1, 0.2)
Out[12]: array([0. , 0.2, 0.4, 0.6, 0.8])
linspace
- numpy.linspace(start, stop, num=50, endpoint=True, dtype=None) - 从 [start, stop] 的全闭区间中按间隔选出 num 个数值来
In [13]: np.linspace(0, 20, 10)
Out[13]: array([ 0. , 2.22222222, 4.44444444, 6.66666667, 8.88888889,
11.11111111, 13.33333333, 15.55555556, 17.77777778, 20. ])
In [14]: np.linspace(0, 20, 11)
Out[14]: array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20.])
Notes: 终止点的值是包含在生成的数组中的。
随机数 random
创建随机整数的 ndarray 数组
- random.randint(low, high=None, size=None) - 创建形状为 size 的 ndarray 数组,数组的值是从 [low, high) 区间中随机抽取的整数。
In [15]: np.random.randint(0, 10)
Out[15]: 7
In [16]: np.random.randint(0, 10, 10)
Out[16]: array([2, 5, 2, 4, 1, 2, 2, 8, 7, 7])
有时为了保证机器学习实验的可重复、可复制性,我们需要在训练和调试时生成的随机数是一样的。众所周知,计算机中的随机数都是伪随机数,我们可以通过设置随机种子,来保证前后生成的随机数是一样的。
代码语言:javascript复制In [17]: np.random.seed(666)
In [18]: np.random.randint(0, 10)
Out[18]: 6
In [19]: np.random.randint(0, 10)
Out[19]: 6
创建随机浮点数的 ndarray 数组
- random.random(size=None) - 创建形状为 size 的 ndarray 数组,数组的值是 0,1之间均匀分布的浮点数
In [20]: np.random.random()
Out[20]: 0.7744794542685887
In [21]: np.random.random(size = (2, 5))
Out[21]: array([[0.53280254, 0.25913185, 0.58381262, 0.32569065, 0.88889931],
[0.62640453, 0.81887369, 0.54734542, 0.41671201, 0.74304719]])
创建随机浮点数的 ndarray 数组
- random.normal(loc=0.0, scale=1.0, size=None) - 创建形状为 size 的 ndarray 数组,数组的值是均值为 loc 方差为 scale 的浮点数
In [20]: np.random.normal()
Out[20]: -0.6564722973415308
In [20]: np.random.normal(0, 1, (3, 5))
Out[20]: array([[-0.02607576, -0.82975832, 0.29655378, -0.3126795 , -0.61130127],
[-0.8217515 , 0.8971227 , 0.13607861, -0.2586548 , 1.11076564],
[-0.18842439, -0.04148929, -0.98479191, -1.35228176, 0.19432385]])
查看帮助文档
有两种方式可以在 Jupyter Notebook 中查看模块或函数的帮助文档
- 在 Jupyter Notebook 外部查看帮助文档
np.random.normal? # 查看normal函数的帮助文档
np.random? # 查看random模块的帮助文档
- 在 Jupyter Notebook 内部查看帮助文档
help(np.random.normal)
References:
- Python3入门机器学习 经典算法与应用: https://coding.imooc.com/class/chapter/169.html#Anchor