Numpy: 创建数组
来自CloudWiki
导入模块
>>> import numpy as np
创建基本数组
>>> np.array([1, 2, 3, 4, 5]) # 把列表转换为数组 array([1, 2, 3, 4, 5]) >>> np.array((1, 2, 3, 4, 5)) # 把元组转换成数组 array([1, 2, 3, 4, 5]) >>> np.array(range(5)) # 把range对象转换成数组 array([0, 1, 2, 3, 4]) >>> np.array([[1, 2, 3], [4, 5, 6]]) # 二维数组 array([[1, 2, 3], [4, 5, 6]]) >>> np.arange(8) # 类似于内置函数range() array([0, 1, 2, 3, 4, 5, 6, 7]) >>> np.arange(1, 10, 2) array([1, 3, 5, 7, 9])
指定数据类型
>>> a = np.array([1, 2, 3], dtype = complex) >>> print(a) [1.+0.j 2.+0.j 3.+0.j]
创建各种数组
创建等差数列
numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
>>> np.linspace(0,10,11) array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
创建等比数列
numpy.logspace 函数用于创建一个于等比数列。格式如下:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
>>> a = np.logspace(0,9,10) >>> a array([ 1.00000000e+00, 1.00000000e+01, 1.00000000e+02, 1.00000000e+03, 1.00000000e+04, 1.00000000e+05, 1.00000000e+06, 1.00000000e+07, 1.00000000e+08, 1.00000000e+09]) >>> a = np.logspace(0,9,10,base=2) >>> a array([ 1., 2., 4., 8., 16., 32., 64., 128., 256., 512.])
创建其他数组
# 默认为浮点数 >>> x = np.zeros(5) >>> x array([0., 0., 0., 0., 0.]) # 设置类型为整数 >>> y = np.zeros((5,),dtype = int) >>> y array([0, 0, 0, 0, 0]) # 默认为浮点数 >>> x = np.ones(5) >>> x array([1., 1., 1., 1., 1.]) # 设置类型为整数 >>> x = np.ones([2,2],dtype = int) >>> x array([[1, 1], [1, 1]])
>>> np.identity(3) #单位矩阵 array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) >>> np.identity(2) #单位矩阵 array([[1., 0.], [0., 1.]]) >>> np.hamming(20) #Hamming窗口 array([0.08 , 0.10492407, 0.17699537, 0.28840385, 0.42707668, 0.5779865 , 0.7247799 , 0.85154952, 0.94455793, 0.9937262 , 0.9937262 , 0.94455793, 0.85154952, 0.7247799 , 0.5779865 , 0.42707668, 0.28840385, 0.17699537, 0.10492407, 0.08 ]) >>> np.blackman(10) #Blackman窗口 array([-1.38777878e-17, 5.08696327e-02, 2.58000502e-01, 6.30000000e-01, 9.51129866e-01, 9.51129866e-01, 6.30000000e-01, 2.58000502e-01, 5.08696327e-02, -1.38777878e-17]) >>> np.kaiser(12,5) #Kaiser窗口 array([0.03671089, 0.16199525, 0.36683806, 0.61609304, 0.84458838, 0.98167828, 0.98167828, 0.84458838, 0.61609304, 0.36683806, 0.16199525, 0.03671089]) >>> np.random.randint(0,50,5) #随机数组,5个0到50之间的整数 array([ 9, 36, 27, 32, 45]) >>> np.random.randint(0,50,(3,5)) #3行5列,15个介于0和50之间的整数 array([[24, 37, 39, 0, 2], [35, 30, 3, 44, 42], [16, 18, 10, 28, 32]]) >>> np.random.rand(10) #10个随机小数 array([0.52956314, 0.14924464, 0.17543161, 0.88862925, 0.81509813, 0.92279044, 0.05609938, 0.39233243, 0.11169266, 0.92278519])