NumPy:快速创建数组(Array)


快速创建数组(Array)

NumPy为Python提供了高阶数组与矩阵运算,因此数组(Array)也成为使用NumPy的最基本数据单元,本Note记录如何快速的创建数组。

将Python List转换成数组

如果有现成的Python list,则可以直接通过numpy.array()函数将Python list转成NumPy数组。如下为一维数组实例。

import numpy as np

a_list = [1,2,3,4]
np.array(a_list) # array([1, 2, 3, 4])

多维数组实例:

b_list = [range(i,i+3) for i in [1,3,5]]
np.array(b_list)
# array([[1, 2, 3],
#        [3, 4, 5],
#        [5, 6, 7]])

zeros()生成全0数组

dtype可以用来限制生成数组内数据类型,默认为float。如下为一维数组实例

np.zeros(5, dtype=int) # array([0, 0, 0, 0, 0])

ones()生成全1数组

功能同zeros(),ones()可以用来生成全1数组。如下为3x5数组实例。

np.ones((3,5),dtype=int)
# array([[1, 1, 1, 1, 1],
#        [1, 1, 1, 1, 1],
#        [1, 1, 1, 1, 1]])

full()生成同一值数组

类似全0和全1,full()可以用来生成由同一值组成的数组。如下为3x5且每一个元素均为2.4的数组实例。

np.full((3,5),2.4)
# array([[2.4, 2.4, 2.4, 2.4, 2.4],
#        [2.4, 2.4, 2.4, 2.4, 2.4],
#        [2.4, 2.4, 2.4, 2.4, 2.4]])

这个数组也可以用zeros()和ones()来实现。

np.zeros((3,5),dtype=float) + 2.4
# array([[2.4, 2.4, 2.4, 2.4, 2.4],
#        [2.4, 2.4, 2.4, 2.4, 2.4],
#        [2.4, 2.4, 2.4, 2.4, 2.4]])
np.ones((3,5),dtype=float) * 2.4
# array([[2.4, 2.4, 2.4, 2.4, 2.4],
#        [2.4, 2.4, 2.4, 2.4, 2.4],
#        [2.4, 2.4, 2.4, 2.4, 2.4]])

arange()生成由递增数列组成的数组

如下实例,生成从0到18递增(增幅为2)的数组。

np.arange(0,20,2) # array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

linspace()生成由递增数列组成的数组

使用arange()时,我们知道数列的增幅为多少,如果不知道增幅,可以使用lingspace(),如下实例创建一个在0到1之间均匀的生成5个值的数组。

np.linspace(0,1,5) # array([0.  , 0.25, 0.5 , 0.75, 1.  ])

随机值组成的数组

使用random.random()可以生成一个均匀分布的随机值组成的数组

np.random.random((3,5))
# array([[0.61138824, 0.54712149, 0.40095232, 0.39771161, 0.0281933 ],
#        [0.08123355, 0.41283792, 0.00461631, 0.12341322, 0.86842517],
#        [0.93693765, 0.97597066, 0.30344276, 0.8472288 , 0.80629387]])

使用random.norm()可以生成一个均值为0,方差为1的正态分布的随机值组成的数组。

np.random.normal(0,1,size=(3,5))
# array([[ 1.30565338, -1.08954521, -0.209259  ,  0.85940426,  0.68683533],
#        [ 1.20633136,  2.57417898,  0.43243003,  0.3559354 ,  0.82257559],
#        [-1.11870164,  0.04259074,  1.7639825 , -0.30045559,  2.50982843]])

使用random.randint()可以生成一个在给定范围内随机选择的整数组成的数组。如下实例生成一个在0(含)到10(不含)之间随机选择组成的3x5整数数组。

np.random.randint(0,10,size=(3,5))
# array([[0, 7, 0, 9, 9],
#        [4, 4, 8, 2, 8],
#        [8, 2, 0, 7, 2]])

eye()生成单位矩阵

单位矩阵是一个对角线元素为1,其余元素均为0的矩阵。以下实例生成一个5*5的单位矩阵。

np.eye(5)
# array([[1., 0., 0., 0., 0.],
#        [0., 1., 0., 0., 0.],
#        [0., 0., 1., 0., 0.],
#        [0., 0., 0., 1., 0.],
#        [0., 0., 0., 0., 1.]])

Author: wenvenn
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source wenvenn !