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])