龙空技术网

Python数据分析之Numpy学习笔记(含案例及数据截图)

程序员梓羽同学 505

前言:

此时同学们对“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文件