导入numpy
代码语言:javascript复制import numpy as numpy
print(numpy.__vision__)
#'1.16.2'
numpy.array
array的创建和访问
代码语言:javascript复制nparr = np.array([i for i in range(10)])
#创建numpy.array数组
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nparr[5]
#可以通过索引方法访问第6个元素
array的数据类型
dtype
方法,dtype
是datatype的缩写
nparr.dtype
# dtype('int32')
生成特定需求的数组或矩阵
代码语言:javascript复制np.zeros(10)
#array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros(10).dtype
#dtype('float64')
np.zeros(10,dtype='int')
#可以使用dtype属性为生成的数组设置属性
np.zeros(shape=(3,5),dtype='int')
#array([[0, 0, 0, 0, 0],
# [0, 0, 0, 0, 0],
# [0, 0, 0, 0, 0]])
np.ones((3,5))
#同理可以生成全为1的矩阵
#array([[1., 1., 1., 1., 1.],
# [1., 1., 1., 1., 1.],
# [1., 1., 1., 1., 1.]])
np.full((3,5),666)
#除了全为0和1,也可以生成全为特定数的矩阵,使用full方法
#array([[666, 666, 666, 666, 666],
# [666, 666, 666, 666, 666],
# [666, 666, 666, 666, 666]])
arange
Python内置的列表生成式
生成0~20之间,左闭右开,步长为2的列表
代码语言:javascript复制[i for i in range(0,20,2)]
#0到20,不包括20,步长为2
#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
np.arange()方法
使用np.arange()
方法生成如上列表
np.arange(0,20,2)
#array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
np.arange(0,10)
# 步长默认值为1
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(10)
# 起点默认为0
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
linspace
在Matlab中也有类似的方法,一般用于作图的时候
代码语言:javascript复制np.linspace(0,20,10)
# array([ 0. , 2.22222222, 4.44444444, 6.66666667, 8.88888889,
# 11.11111111, 13.33333333, 15.55555556, 17.77777778, 20. ])
np.linspace(0,20,11)
# linspace 终止点参数包含在生成的array里面
# 第三个参数不是步长,而是生成几个数/点
# array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20.])
random
代码语言:javascript复制# 生成0~9之间一个随机的整数,右边界不包括
np.random.randint(0,10)
# 4
# 生成10个0~9之间的随机整数,不包括右边界10
np.random.randint(0,10,10)
# array([5, 2, 5, 4, 4, 9, 0, 4, 1, 7])
# 也可以用这种方法生成随机矩阵
np.random.randint(4,8,size=(3,5))
#array([[4, 4, 5, 7, 4],
# [5, 4, 5, 7, 5],
# [5, 6, 5, 7, 6]])
# 生成0~1之间的随机数
np.random.random()
# 0.2811684913927954
# 生成10个0~1之间的随机数,下面两种方法等价
np.random.random(10)
np.random.random(size = 10)
# array([0.76741234, 0.95323137, 0.29097383, 0.84778197, 0.3497619 ,
# 0.92389692, 0.29489453, 0.52438061, 0.94253896, 0.07473949])
#默认生成均值为0,方差为1的随机数
np.random.normal()
# 生成均值为10,方差为100的随机数
np.random.normal(10,100)
# 第三个参数传入元组可以生成特定大小的矩阵
np.random.normal(0,1,(3,5))
#array([[-0.94249688, -1.58045861, 0.90472662, -0.82628327, 0.82101369],
# [ 0.36712592, 1.65399586, 0.13946473, -1.21715355, -0.99494737],
# [-1.56448586, -1.62879004, 1.23174866, -0.91360034, -0.27084407]])
seed的使用
有的时候需要保存某个随机生成的向量/矩阵,这个时候就需要使用seed方法。
代码语言:javascript复制# 首先指定一个seed,然后生成一个随机矩阵
np.random.seed(666)
np.random.randint(4,8,size=(3,5))
#array([[4, 6, 5, 6, 6],
# [6, 5, 6, 4, 5],
# [7, 6, 7, 4, 7]])
# 不使用seed,生成条件相同的随机矩阵,可以发现和上面的是不一样的
np.random.randint(4,8,size=(3,5))
#array([[4, 6, 5, 7, 4],
# [6, 4, 7, 5, 6],
# [4, 7, 5, 5, 5]])
# 使用seed,可以生成和上面一样的矩阵
np.random.seed(666)
np.random.randint(4,8,size=(3,5))
#array([[4, 6, 5, 6, 6],
# [6, 5, 6, 4, 5],
# [7, 6, 7, 4, 7]])