NumPy库是Python中科学计算的核心库。它提供了一个高性能的多维数组对象,以及使用这些数组的工具。
1.安装及使用方法:
pip install numpy
import numpy as np
2.numpy数组
可分为1维数组,2维数组,多维数组。
3.创建numpy数组
import numpy as np
a=np.array([1,2,3])
print(a) # [1,2,3]
b = np.array([(1.5,2,3), (4,5,6)], dtype = float)
print(b) # [[1.5 2. 3. ],[4. 5. 6. ]]
c = np.array([[(1.5, 2, 3), (4, 5, 6)], [(3, 2, 1), (4, 5, 6)]], dtype=float)
print(c) # [[[1.5 2. 3. ], [4. 5. 6. ]], [[3. 2. 1. ], [4. 5. 6. ]]]
4.numpy初始化
import munpy as np
np.zeros((3,4)) # 创建3行4列的0数组 [[0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]
np.ones((2,3,4),dtype=int16) # 创建元素为1的三维数组 [[[1 1 1 1], [1 1 1 1], [1 1 1 1]],[[1 1 1 1], [1 1 1 1], [1 1 1 1]]]
np.arange(10,40,5) # 创建从10开始,到40结束,步长为5的均匀数组 [10,15,20,25,30,35]
np.linspace(0,2,9) # 创建等分数组 [0.0 , 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]
np.full((2,3),7) #创建2行3列的常量数组 [[7, 7, 7], [7, 7, 7]]
np.eye(3) #创建3*3的单位矩阵 [[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]
np.random.random(2,3) # 创建2*3随机数组 [[0.62188069, 0.2986197, 0.26612047],[0.1910504, 0.40677743, 0.80493732]]
np.empty((2,3)) # 创建2*3空数组 [[0,0,0],[0,0,0]]
5.保存和载入
np.save("my_array", a) # 将数组a保存到磁盘中,生成my_array.npy
np.savea("my_arrays", a, b) # 将数组a, b保存到磁盘中,生成my_arrays.npyz
np.savetxt("myarray.txt", a, delimiter=" ") # 将数组a保存成txt文件,以" "分隔
np.load("my_array.npy") # 载入my_array.npy文件
np.loadtxt("my_file.txt") # 载入my_file.txt文件
np.genfromtxt("my_file.csv", delimiter=',') # 载入my_file.csv文件
6.数据类型
np.int64 # 带符号的64位整型
np.float32 # 32位浮点类型
np.complex # 复数类型
np.bool # 存储True和False值的布尔类型
np.object # python对象类型
np.string_ # 固定长度的字符串类型
np.unicode_ # 固定长度的unicode类型
7.数组检查
a.shape # 数组尺寸
len(a) # 数组长度,即行数
b.ndim # 数组维数
e.size # 数组元素数量
b.dtype # 数组元素数据类型
b.dtype.name # 数组元素数据类型
b.astype(int) # 将数组转化为不同的数组类型数组
8.帮助信息
np.info(np.dtype) #np.dtype的说明方法
9.数组计算
g=a-b # 数组a减去数组b 等价于 g=np.subtract(a,b)
g=a+b # 数组a加数组b 等价于 g=np.add(a,b)
g=a/b # 数组a除以数组b 等价于 g=np.divide(a,b)
g=a*b # 数组a乘以数组b 等价于 g=np.multiply(a,b)
np.exp(b) # 数组b求幂
np.sqrt(b) # 数组b开方
np.sin(b) # 数组b求正弦
np.cos(b) # 数组b求余弦
np.log(b) # 数组b求对数
np.dot(a,b) # 点积 主要有向量点积和矩阵乘法
10.数组比较运算
a==b # 判断数组a元素与数组b元素是否相等,等到与较高维数数组相同的布尔数组 等价于 np.array_equal(a,b)
a<2 # 判断数组a元素是否与2相等,得到与原数组维数一致的布尔数组
11.数组的聚合函数
a.sum() # 数组求和
a.min() # 数组最小值
b.max(axis=0) 数组的最大值,axis=0 代表列 , axis=1 代表行
b.cumsum(axis=1) ## 按照所给定的轴参数返回元素的梯形累计和,axis=0,按照行累加。axis=1,按照列累加。axis不给定具体值,就把numpy数组当成一个一维数组
b.mean() # 默认是对所有元素相加求平均值;axis = 0,对各列求均值;axis = 1,对各行求均值
b.median() # 计算沿指定轴的均值,axis=0对应行,axis=1对应列返回数组元素的均值
a.corrcoef() #计算矩阵的相关系数矩阵
np.std(b) # 计算沿指定轴的标准差。返回数组元素的标准差 axis=0计算每一列的标准差,axis=1计算每一行的标准差
12.矩阵的复制
h=a.view() # 创建具有相同数据的数组的视图
np.copy(a) # 创建该数组的副本
h=a.copy() # 创建该数组的深度副本
13.数组排序
a.sort() # 数组元素从小到大排序
c.sort(axis=0) #数组元素axis=1按行,axis=0按列排序
14.子集,切片,索引
b[0] # 获取数组的0维
b[1] # 获取数组的1维
b[1,2] # 获取数组的1维,索引为2的数据 等价于 b[1][2]
b[1,2,1] # 获取数组的1维,索引为2的行的索引为1的数据 等价于 b[1][2][1]
b[0:2] # 获取数组的0维和1维
b[0:2,1] # 获取数组的0维和1维,索引为1的数据
b[1,0,0:2] # 获取数组的1维,索引为0的行,索引为0,1的数据
b[1,::-1] # 获取数组第1维,逆序
b[1,0,::-1] # 获取数组第1维,索引0行,逆序
b[::-1,::-1] # 获取数组第0、1维,逆序
b[1,:,:] # 获取数组第1维全部数据 大于等价三维的数组,可等价于 b[1,...]
b[b<2] # 获取小于2的元素组成一维数组
15.数组处理
# 矩阵转置
c=np.transpose(b) # b的转置矩阵 等价于 c=b.T
# 将多维数组改为一维数组
c=np.ravel(b)
# 重塑数组,不改变元素。a代表行,b代表列,-1表示自动计算
c=b.reshape(3,2) # 三行两列 等价于 c=b.reshape(3,-1),一共只有6个元素
# 重塑数组,改变元素
a=arange(6) # a [0,1,2,3,4,5]
a.resize(2,2) # a [[0,1],[2,3]] 改变了数组a的值
a=arange(6) # a [0,1,2,3,4,5]
np.resize(a,(2,2)) # 返回 [[0,1],[2,3]] ,a [0,1,2,3,4,5]没有改变数组a的值
np.append(a,b) # 将数组b追加到数组a,获得一维数组
np.insert(a,1,5) # 将数组a变成一维数组后在索引1的位置增加元素5,获得一维数组
np.delete(a,1) # 将数组a变成一维数组后删除索引1的元素,获得一维数组
np.concatenate((a,d),axis=0) # 将数组d追加在数组a后,获得新数组,数组的列元素个数要相等 axis=0,按列拼接,axis=1按行拼接
np.vstack(a,b) # 按垂直方向(行顺序)堆叠数组构成一个新的数组,堆叠的数组需要具有相同的维度
np.hstack(a,b) # 按水平方向(列顺序)堆叠数组构成一个新的数组,堆叠的数组需要具有相同的维度
np.r_(a,b) # 是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
np.c_(a,b) # 是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。
np.hsplit(a,2) # 将数组a横向等分成两个数组
np.hsplit(a,(3,6)) # 数组a第三个和第六个索引前纵向切分数组
np.vsplit(a,2) # 与np.hsplit相同,只不过它的作用为横向切分数组