目录
一,Numpy的概念
二,数组
1,数组的属性
2,数组的创建
2.1 array函数
2.2 arrange函数
2.3 linspace函数
2.4 logspace函数
2.5 zeros函数
2.6 ones函数
2.7 eye函数
2.8 diag函数
3,数组数据类型的转换
3.1,np.数据类型(数据对象)
3.2,数据对象.astype(np.数据类型)
4,数组的处理
4.1,数组的索引和切片
4.2,修改数组形状
4.3,数组的展平与连接
4.4,数组元素的处理
4.5,数组的运算
5,随机数模块
5.1,random函数:生成[0,1)内的随机数
5.2,rand函数:生成服从均匀分布的[0,1)内的随机数
5.3,randn函数:生成服从正态分布的随机数
5.4,randint函数:生成给定上下限范围的随机数
5.5,choice函数:从一个列表或者数组中随机进行采样
5.6,random模块的常用随机数生成函数
三,矩阵
1,创建矩阵
2,矩阵的矢量积
3,矩阵的数量积
四,读写文件
1,save函数是以二进制的格式保存一个数组数据
2,savez函数可以将多个数组保存到一个文件
3,load函数是从二进制的文件中读取数据
4,savetxt()函数将数组写到某种分隔符隔开的文本文件中。
5,loadtxt()函数把文件加载到一个二维数组中。
五,numpy中的统计分析
1,sort()直接排序
2,间接排序
3,重复和去重
Numpy是用于数据科学计算的基础模块,不但能够完成科学计算的任务,而且能够被用作高效的多维数据容器,可用于存储和处理大型矩阵,Numpy的数据容器能够保存任意类型的数据,这使得Numpy可以快速地整合各种数据。
属性 | 说明 |
---|---|
ndim | 返回int,表示数组的维数 |
shape | 返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(n,m) |
size | 返回int,表示数组元素总数,等于数组形状的乘积 |
dtype | 返回data-type,描述数组中元素的类型 |
itemsize | 返回int,表示数组的每个元素的大小(以字节为单位) |
用于创建一维或多维数组。np.array(object,dtype,ndim)
参数名称 | 说明 |
---|---|
object | 用于接收数组,表示想要创建的数组,无默认 |
dtype | 接收data-type,表示数组所需的数据类型,默认为None |
ndim | 接收int。指定生成数组应该具有的最小维数,默认为None |
# np.array生成一维数组
arr1=np.array([1,2,3,4])
# np.array生成二维数组
arr2=np.array([[1,2,3,4],[4,5,6,7]])
类似于Python自带的函数range,通过指定开始值、终值和步长来创建一维等差数组。创建的数组不含终值。步长默认为1.
# np.arrange创建数组
arr=np.arange(1,10)
通过指定开始值、终值和元素个数来创建一维等差数组。创建的数组包含终值。
# 通过np.linspace创建开始值为1,终值为10,个数为5的一维等差数组。
arr=np.linspace(1,10,5)
与linspace函数类似,但它创建的是等比数列
# 通过np.logspace创建开始值为1,终值为10,个数为5的一维等比数组。
arr=np.logspace(1,10,5)
创建指定长度或形状的的全零数组
# 创建长度为2的一维全零数组
arr=np.zeros(2)
# 创建三行四列的全零数组
arr=np.zeros((3,4))
创建指定长度或形状的的全一数组
# 创建长度为2的一维全1数组
arr=np.ones(2)
# 创建三行四列的全1数组
arr=np.ones((3,4))
用于创建生成主对角线上的元素为1,其他元素为0的数组。类似单位矩阵
# 创建四行四列的主对角线上的元素为1,其他元素为0的数组
arr=np.eye(4)
创建对角矩阵,即除对角线外的其他元素都为0.
# 创建对角元素分别为1和3,其他元素为0的对角矩阵。
arr=np.diag([1,3])
创建数组并查看其数据类型
arr3=np.arange(1,10)
arr3.dtype
通过 np.数据类型(数据对象)的方式改变其数据类型。
arr3=np.int64(arr3)
代码运行截图如下:
arr3.astype(np.int32)
代码运行截图如下:
4.1.1 一维数组索引:数组名[m:n],其中m,n为数组元素下标
arr=np.arange(1,10)
arr[0:2]
运行结果如下 :
4.1.2 一维数组切片:数组名[start,end,step],(半开区间)
arr[0:3:1]
运行结果如下 :
4.1.3 二维数组切片:数组名[行索引,列索引],半开区间
创建二维数组,截取行索引等于0后面的所有的行和第一列后面所有的列组成的数组。
arr=np.array([[1,2,3,4],[4,5,6,7]])
arr[0:,1:]
运行结果如下:
4.1.4 整数索引:从两个序列的对应位置取出两个整数来组成行下标和列下标。
4.1.5 布尔值索引:当结果对象是布尔运算(例如比较运算符)的结果时,使用布尔值索引
4.2.1,数组名.reshape=(行,列)。不改变原数组形状
#创建一个数组
arr=np.arange(12)
arr.reshape(3,4)
4.2.2,数组名.resize=(行,列)。不改变原数组形状,返回指定大小的新数组。
arr.resize(4,3)
4.2.3 设置维度f修改数组的形状方法:
arr.shape=(3,4)
结果如下所示:
4.3.1 ravel()函数:可以将多维数组展平变为一维数组,原arr不变。按行展平
#ravel()函数用于按行展平
arr3=arr1.ravel()
运行结果如下:
4.3.2 flatten()函数:可以将多维数组展平变为一维数组,并且可以选择按行或者按列展平
#flatten()函数默认按行展平
arr3=arr1.flatten()
#"F"表示按列展平
arr3=arr1.flatten("F")
运行结果如下:
4.3.3 hstack()函数,左右拼接
np.hstack((arr1,arr2))
运行结果如
4.3.4 vstack()函数:上下拼接
np.vstack((arr1,arr2))
运行结果如下:
4.3.5 concatenate()函数:用于沿指定轴连接相同形状的两个或多个数组。
#axis = 1左右拼接
np.concatenate((arr1,arr2),axis = 1)
#axis = 0上下拼接
np.concatenate((arr1,arr2),axis = 0)
运行结果如下:
4.3.6 spilt()函数:沿特定的轴将数组分割为子数组
#axis = 1 分割列
np.split(arr1,3,axis=0)
#axis = 0 分割行
np.split(arr1,3,axis=1)
运行结果如下:
4.3.7 transpose()函数:实现数组的转置,原arr不变
#方法一
np.transpose(arr1)
#方法二
arr1.T
运行结果如下:
4.4.1 append()函数:是在数组末尾添加函数
#按行添加
np.append(arr,[[0, 0, 0]],axis=0)
#按列添加
np.append(arr,[[0],[0], [0]],axis=1)
运行结果如下:
4.4.2 insert()函数:在给定索引前,沿给定轴在输入数组中插入元素
#按行
np.insert(arr,3,[[0,0,0],[1,1,1],[2,2,2]],axis=0)
#按列
np.insert(arr,3,[[0,0,0],[1,1,1],[2,2,2]],axis=1)
结果如下:
4.4.3 delete()函数:返回从输入数组中删除指定子数组的新数组
#删除第二行
np.delete(arr,1,axis=0)
#用切片表示元素范围
np.delete(arr,np.s_[1,1,1])
运行结果如下:
相同形状的数组按元素级进行逐个元素运算,而不同形状的数组,则按广播机制进行计算
函数名 | 用途 |
seed | 确定随机种子 |
permutation | 返回一个序列的随机排序 |
shuffle | 对一个序列进行随机排序(改变原序列) |
运算符采用*,且*左边矩阵的列数要与其右边的行数相等,运算结果是矩阵中对应元素相乘的累加和
也称为矩阵的点乘操作,即各元素相乘
在桌面新建一个名为save的文件夹。
#np.save("路径\\结果文件名",arr名)
np.save("C:\\Users\\Yan\\Desktop\\save\\save_arr1",arr)
结果如下:
np.savez("C:\\Users\\Yan\\Desktop\\save\\save_arr2",arr1,arr2)
结果如下:
存储时可以省略扩展名,但读取时不能省略。
np.load("C:\\Users\\Yan\\Desktop\\save\\save_arr1.npy")
结果如下:
np.savetxt("C:\\Users\\Yan\\Desktop\\save\\save_arr3.txt",arr,fmt="%d",delimiter="。。")
np.loadtxt("C:\\Users\\Yan\\Desktop\\save\\save_arr3.txt",delimiter="。。")
#delimiter中是txt存储时的分割方式
结果如下:
argsort():返回沿轴按升序排序的值的下标
np.argsort(arr1)
lexsort():用于对多个序列进行排序。返回排序的值的下标
np.lexsort((arr,arr1))
去重:
unique函数可以找出数组中的唯一值,并返回按升序排序的结果
重复:
tile() 重复整个数组
np.tile(arr,2)
# 2表示重复次数
repeat():重复元素,可指定按行重复或者按列重复