目录
5.2,rand函数:生成服从均匀分布的[0,1)内的随机数
4,savetxt()函数将数组写到某种分隔符隔开的文本文件中。
一,Numpy的概念
Numpy是用于数据科学计算的基础模块,不但能够完成科学计算的任务,而且能够被用作高效的多维数据容器,可用于存储和处理大型矩阵,Numpy的数据容器能够保存任意类型的数据,这使得Numpy可以快速地整合各种数据。
二,数组
1,数组的属性
属性 | 说明 |
---|---|
ndim | 返回int,表示数组的维数 |
shape | 返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(n,m) |
size | 返回int,表示数组元素总数,等于数组形状的乘积 |
dtype | 返回data-type,描述数组中元素的类型 |
itemsize | 返回int,表示数组的每个元素的大小(以字节为单位) |
2,数组的创建
2.1 array函数
用于创建一维或多维数组。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]])
2.2 arrange函数
类似于Python自带的函数range,通过指定开始值、终值和步长来创建一维等差数组。创建的数组不含终值。步长默认为1.
# np.arrange创建数组
arr=np.arange(1,10)
2.3 linspace函数
通过指定开始值、终值和元素个数来创建一维等差数组。创建的数组包含终值。
# 通过np.linspace创建开始值为1,终值为10,个数为5的一维等差数组。
arr=np.linspace(1,10,5)
2.4 logspace函数
与linspace函数类似,但它创建的是等比数列
# 通过np.logspace创建开始值为1,终值为10,个数为5的一维等比数组。
arr=np.logspace(1,10,5)
2.5 zeros函数
创建指定长度或形状的的全零数组
# 创建长度为2的一维全零数组
arr=np.zeros(2)
# 创建三行四列的全零数组
arr=np.zeros((3,4))
2.6 ones函数
创建指定长度或形状的的全一数组
# 创建长度为2的一维全1数组
arr=np.ones(2)
# 创建三行四列的全1数组
arr=np.ones((3,4))
2.7 eye函数
用于创建生成主对角线上的元素为1,其他元素为0的数组。类似单位矩阵
# 创建四行四列的主对角线上的元素为1,其他元素为0的数组
arr=np.eye(4)
2.8 diag函数
创建对角矩阵,即除对角线外的其他元素都为0.
# 创建对角元素分别为1和3,其他元素为0的对角矩阵。
arr=np.diag([1,3])
3,数组数据类型的转换
3.1,np.数据类型(数据对象)
创建数组并查看其数据类型
arr3=np.arange(1,10)
arr3.dtype
通过 np.数据类型(数据对象)的方式改变其数据类型。
arr3=np.int64(arr3)
代码运行截图如下:
3.2,数据对象.astype(np.数据类型)
arr3.astype(np.int32)
代码运行截图如下:
4,数组的处理
4.1,数组的索引和切片
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,修改数组形状
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,数组的展平与连接
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,数组元素的处理
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])
运行结果如下:
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模块的常用随机数生成函数
函数名 | 用途 |
seed | 确定随机种子 |
permutation | 返回一个序列的随机排序 |
shuffle | 对一个序列进行随机排序(改变原序列) |
三,矩阵
1,创建矩阵
2,矩阵的矢量积
运算符采用*,且*左边矩阵的列数要与其右边的行数相等,运算结果是矩阵中对应元素相乘的累加和
3,矩阵的数量积
也称为矩阵的点乘操作,即各元素相乘
四,读写文件
1,save函数是以二进制的格式保存一个数组数据
在桌面新建一个名为save的文件夹。
#np.save("路径\\结果文件名",arr名)
np.save("C:\\Users\\Yan\\Desktop\\save\\save_arr1",arr)
结果如下:
2,savez函数可以将多个数组保存到一个文件
np.savez("C:\\Users\\Yan\\Desktop\\save\\save_arr2",arr1,arr2)
结果如下:
3,load函数是从二进制的文件中读取数据
存储时可以省略扩展名,但读取时不能省略。
np.load("C:\\Users\\Yan\\Desktop\\save\\save_arr1.npy")
结果如下:
4,savetxt()函数将数组写到某种分隔符隔开的文本文件中。
np.savetxt("C:\\Users\\Yan\\Desktop\\save\\save_arr3.txt",arr,fmt="%d",delimiter="。。")
5,loadtxt()函数把文件加载到一个二维数组中。
np.loadtxt("C:\\Users\\Yan\\Desktop\\save\\save_arr3.txt",delimiter="。。")
#delimiter中是txt存储时的分割方式
结果如下:
五,numpy中的统计分析
1,sort()直接排序
2,间接排序
argsort():返回沿轴按升序排序的值的下标
np.argsort(arr1)
lexsort():用于对多个序列进行排序。返回排序的值的下标
np.lexsort((arr,arr1))
3,重复和去重
去重:
unique函数可以找出数组中的唯一值,并返回按升序排序的结果
重复:
tile() 重复整个数组
np.tile(arr,2)
# 2表示重复次数
repeat():重复元素,可指定按行重复或者按列重复