Numpy入门笔记1

2022-06-19 17:29:08 浏览数 (1)

导入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的缩写

代码语言:javascript复制
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()方法生成如上列表

代码语言:javascript复制
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]])

0 人点赞