目录
1.numpy基础
1.1 创建数组对象
通过numpy库的array函数可以创建ndarray数组。ndarray是一个通用的同构数据容器,即其中所有的元素都需要相同的类型。numpy库能将数据(列表,元组,数组或其他序列类型)转化为ndarray数组。
·使用array函数创建数组
格式:np.array(data,dtype,ndim)
·data:表示想要创建的数组。
·dtype:表示数组所需要的数据类型,默认为None。
·ndim:接收int,指定生成数组的最小维数,默认为None。
import numpy as np
n1=np.array([1,2,3,4])
n2=np.array([[1,2,3,4],[5,6,7,8]])
display(n1)
display(n2)
输出结果:
array([1, 2, 3, 4])
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
在array函数指定dtype
n3=np.array([1,2,3,4],dtype=float)
display(n3)
print(n3.dtype)
输出结果:
array([1., 2., 3., 4.])
float64
·使用arange函数创建数组
# 指定起始值,终止值,步长(可以为小数)
np.arange(1,11,2)
输出结果:
array([1, 3, 5, 7, 9])
·使用linspace函数创建数组
# 起始值,终止值,创建的元素个数
np.linspace(0,10,5)
输出结果:
array([ 0. , 2.5, 5. , 7.5, 10. ])
·使用其他函数
①zeros可以创建指定长度或形状的全0数组。
# 三行四列
display(np.zeros((3,4)))
# 10个数据
display(np.zeros(10))
输出结果:
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
②使用ones函数创建指定长度或形状的全1数组。
# 三行四列
display(np.ones((3,4)))
# 10个数据
display(np.ones(10))
输出结果:
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
③使用full((x,y),value)生成一个x行y列,元素都是value的二维数组。
np.full((3,4),-1)
输出结果:
array([[-1, -1, -1, -1],
[-1, -1, -1, -1],
[-1, -1, -1, -1]])
④diag函数可以创建对角矩阵,即对角线元素为指定值,其他元素为0。
np.diag([11,22,33,44])
输出结果:
array([[11, 0, 0, 0],
[ 0, 22, 0, 0],
[ 0, 0, 33, 0],
[ 0, 0, 0, 44]])
⑤eye函数可以创建对角线位置为1,其他位置全为0的矩阵。
np.eye(4)
输出结果:
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
1.2 ndarray对象属性及类型转换
属性 | 说明 |
---|---|
ndim | 数组的维数 |
shape | 数组的形状(维度) |
size | 数组元素的个数 |
dtype | 返回数组元素的数据类型 |
itemsize | 数组中每个元素的字节大小 |
·数组的类型转换(astype)
m1=np.arange(10)
display(m1.dtype)
# 转换类型
m1=m1.astype(float)
display(m1.dtype)
输出结果:
dtype('int32')
dtype('float64')
数组的变换
·改变数组维度
·数据散开(ravel)
2.数组的索引和切片
2.1 一维数组的索引
一位数组的索引类似于python中的列表。
2.2 多维数组的索引
提供多个一维数组索引
3.数组的运算
3.1 数组的四则运算
3.2 数组的比较运算
3.3 广播机制
广播是指不同形状的数组之间执行算术运算的方式。广播机制需要遵循四个原则:
①让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分在前面加1补齐。
②输出数组的shape是输入数组shape的各轴上的最大值。
③如果输入数组的某个轴和输出数组的对应轴的长度相同或其长度为1时,这个数组能够用来计算,否则出错。
④当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。
可以看到x3的shape为(3,),x4的shape为(3,1),要满足第一个条件的话x3的shape要在前面加1变成了(1,3)。其次输出数组的shape是输入数组shape各轴的最大值,也就是(1,3),(3,3)各个轴的最大值为(3,3)所以输出数组的shape(3,3)。
4.数据统计与分析
4.1 排序
·sort函数排序
格式:np.sort(a,axis,kind,order)
a:要排序的数组。
axis:沿轴排序,axis=1沿横轴排序,axis-0沿纵轴排序。
kind:排序算法,默认为quicksort。
order:如果数组包含字段,则是要排序的字段。
带轴的sort排序
·argsort函数排序
4.2 重复数据与去重
·unique去重
·tile函数重复数据
格式:np.tile(a,reps)
·a:要重复的数组。
·reps:重复的次数。
·repeat函数重复数据
格式:np.repeat(a,reps,axis=None)
·a:要重复的数组。
·reps:重复的次数。
·axis:按指定的轴重复,axis=0按行重复,axis=1按列重复。
4.3 常用函数
常见函数有sum,mean,std,var,min,max等。当axis=0时表示沿纵轴计算,当axis=1时表示沿横轴计算。
4.4 生成随机数的一些函数
函数 | 说明 |
---|---|
random.random | 生成指定形状0-1之间的随机数 |
random.rand | 生成指定形状的0-1之间的随机数 |
random.randint | 生成指定范围内的随机整数 |
random.randn | 生成服从均值为0,标准差为1的正态分布随机数 |
random.uniform | 生成均匀分布随机数 |
·生成0-1之间随机数
·正态分布
·均匀分布