快速创建数组(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.]])