前言:
此时同学们对“pythonmat函数”大约比较注重,朋友们都想要剖析一些“pythonmat函数”的相关资讯。那么小编在网络上收集了一些对于“pythonmat函数””的相关文章,希望朋友们能喜欢,姐妹们一起来了解一下吧!一、Numpy认识1、numpy描述
numpy 是一个科学计算库 ,它的核心:多维数组-ndarray(数组)。ndarray 数据存储方式和list不一样,ndarray是用一块整体的内存来存储数据的。
存储风格:C、F两种方式
C: 按行存储F: 按列存储2、数组的属性
ndim---维度
shape---形状
size---元素个数
dtype---数据类型
itemsize---数组中每个元素的大小
二、数组的创建1、以list对象创建数组2、使用arange()函数来创建数组
参数1:开始位置(包含)
参数2:结束位置(不包含截止位)
参数3:步长
3、使用linspace()函数创建数组(等差)
参数1: 开始位置(包含)
参数2: 结束位置(包含)
参数3: 创建数组元素的个数
4、使用logspace()函数来创建数组(等比)
参数1: 开始位置(包含)10^开始
参数2: 结束位置(包含) 10^结束
参数3: 元素个数
5、使用ones()函数创建数组(生成所有元素为1的数组)
参数:shape(元祖)
6、使用zeros()函数创建数组(生成所有元素为0的数组)
参数:shape(元祖)
7、使用diag()函数创建数组(生成一个对角矩阵数组)
参数:对角线上的值,k=0,对应着eye理解
8、生成随机数组(生成[0,1)中的任意小数random())
参数:元素个数 或 要生成数组的shape
9、生成符合均匀分布的[0,1)的数组rand()
参数:元素个数 或 行列数,直方图验证
10、正态分布(概率分布,需要大量数据支持randn())
标准正态分布:
均值为0,标准差为1。均值反应数据的位置,标准差反应数据的离散程度
生成一个符合正态分布的数组,random.randn生成的是标准生态分布的数组
参数:元素个数 或 行列数
11、生成固定范围内的,固定形状的数组randint()
如果不传size,生成一个随机整数
三、数组形状、类型更改1、创建一个数组2、更改形状(元素个数必须一致)3、reshape(返回一个新的数组)
创建数组的时候,规定形状,可以在创建数组的时候指定形状
4、dtype
创建数组时指定数据类型
也可以使用强制转化,将某类型转化为其他类型
5、自定义数据类型
四、数组元素索引1、先创建一个一维数组,用于验证数组索引2、获取单个元素(通过下标访问单个元素)
data = arr[4]data = arr[-1]print('data:\n',data)3、获取多个元素(通过切片获取,不包含结束位置)
data = arr[7:14]data = arr[3:12:2]print('data:\n',data)4、使用下标形式获取多个元素
注意⚠️:需要将多个下标组成一个元素传进去(列表形式)
data = arr[[5,7,9]]print('data:\n',data)5、二维数组的索引
# 获取第0行(1)的元素data = arr[0,:] # 第0行所有列 逗号之前代表行,逗号之后代表列,而且这个叫行列同时索引data = arr[:,0] # 第0列所有行data = arr[:1,:] # 第0行所有列,不降维度print('data:\n',data)# 获取0,2行的前两列data = arr[[0,2],0:2:1]# data = arr[::2,0:2:1]print('data:\n',data)data: [[0 1] [8 9]]# 一一对应去取0行0列2行1列data = arr[[0,2],[0,1]]# data = arr[[0,2],[0,1,2]] # 错误,前后形状必须一致print('data:\n',data)data: [0 9]# data = arr[[1,2],1:3]# print('data:\n',data)# [[ 5 6]# [ 9 10]]# 利用bool数组进行切片# [0,1,2,3]--->[False True True True]arr_mask = np.array([0,1,2,3],dtype=np.bool)print(arr_mask)# 利用bool数组进行切片data = arr[:,arr_mask] # 第0列不要了data = arr[arr_mask,:] # 第0行不要了print('data:\n',data)bool # 数组做索引 False为丢弃,True为选择
总结:
三维 或者 多维数组
"""
一维 arr[下标/切片]
二维 arr[行下标或者切片,列下标或者切片]
三维 arr[块下标或者切片,行下标或者切片,列下标或者切片]
四维 arr[堆下标或者切片,块下标或者切片,行下标或者切片,列下标或者切片]
"""
注意:
如果使用下标索引,会降维度;如果使用切片,维度不变
bool数组进行索引的时候,需要索引的是二维数组,那么你的bool数组是一维的
bool数组的长度,需要与你要切的维度的长度一致
五、数组展开1、创建数组2、ravel()按行展开3、flatten()将高纬度数组展开为一维,按行展开,默认为C风格
六、数组组合1、创建数组2、vstack()行方向进行拼接(垂直方向)3、hstack()列方向进行拼接(水平方向)4、concatenate()通用方法
既可以进行行方向的拼接也可以进行列方向的拼接
注意:
在行的方向进行拼接,必须保证列数一致
在列的方向进行拼接,必须保证行数一致
七、数组拆分
前提:平均拆分,必须能整除,否则出错
1、创建数组2、vsplit()在行的方向上进行分割数组3、hsplit()在列的方向上进行分割数组4、spllit()在行或列的方向上进行分割数组
八、矩阵创建
创建矩阵,必须是二维的
1、mat方式普通创建矩阵2、mat方式列表转化为矩阵3、mat方式数组转化为矩阵
由于矩阵是二维的,所以用数组创建矩阵,是不能嵌套两个二维的
4、matrix()方式创建矩阵5、asmatrix()方式创建矩阵
推荐使用mat 或 asmatrix 方式创建矩阵
6、使用bmat()进行堆积组合矩阵
使用数组堆积矩阵:
使用列表堆积矩阵:
使用矩阵堆积矩阵:
九、矩阵的运算1、创建矩阵2、矩阵与数的相乘(与矩阵的每一个元素相乘)3、矩阵的相加减4、举证相乘
左矩阵列数=右矩阵行数,才能进行相乘,生成左矩阵行数、右矩阵列数的新矩阵
matmul 或 dot 方式矩阵相乘
5、数组和矩阵相乘6、矩阵特性
m1: [[0 1] [2 3]]矩阵的转置: [[0 2] [1 3]]矩阵的逆: [[-1.5 0.5] [ 1. 0. ]]矩阵的共轭转置: [[0 2] [1 3]]矩阵的视图: [[0 1] [2 3]]矩阵的视图的类型: <class 'numpy.ndarray'>[[ 1. 0.] [ 0. 1.]]十、数组的通用函数1、创建数组2、四则运算3、比较运算(返回同型的同纬度的bool数组)4、逻辑运算
# any 相当于 orprint(np.any(arr1 == arr2))print(np.any(arr1 != arr2))# all 相当于 andprint(np.all(arr1 < arr2))print(np.all(arr1 != arr2))十一、数组的广播机制
广播是指不同形状的数组之间执行算术运算的方式
# 创建一个二维数组arr1 = np.arange(4).reshape((2,2))print('arr1:\n',arr1)print('arr1的形状:\n',arr1.shape) # (2,2)arr2 = np.array([4,2])# arr2 = np.array([[1,2],[1,2],[1,2]])print('arr2:\n',arr2)print('arr2的形状:\n',arr2.shape) # (2,)-->(1,2)print('arr1+arr2:\n',arr1+arr2)
不同形状数组可以运算必须满足的4个原则:
"""
让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。
Ø 输出数组的shape是输入数组shape的各个轴上的最大值。
Ø 如果各个输入数组的对应维度的长度相同或者其长度为1时,这样的数组之间能够用来计算,否则
出错。
Ø 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值
"""
十二、数组的保存与读取1、创建数组2、save 以二进制形式来保存数组
保存的文件是以.npy为后缀的二进制文件
参数1: 保存的文件路径名称,可省略文件名后缀
np.save('./arr1',arr1)3、读取npy文件
arr = np.load('./arr1.npy')4、通过savez来保存多个数组
默认保存的是以.npz结尾的二进制文件
np.savez('./arr2', arr1, arr2)5、加载文件中的数组
多个数组时,是以键值对存储的
6、文本形式的保存
参数:fmt---保存的数组数据类型,delimiter---分隔符
7、加载文本形式的数组8、genfromtxt可以读取结构化数组和缺失数据
filling_values 指定缺失时填充的数据
十三、数组的倒序1、升序排序,而且会对原数组产生影响
arr.sort()2、argsort 返回的是排序之后,元素所在原来位置的索引
res = arr.argsort()3、lexsort 按照最后一个数组的规则来排序十四、数组的去重与重复1、创建数组2、unique去重+排序3、重复数组,重复对象为整体4、按照列进行重复数据,重复对象为列或行十五、数组的统计函数
标签: #pythonmat函数 #python npy文件