欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > numpy模块综合使用

numpy模块综合使用

2025/5/12 16:25:59 来源:https://blog.csdn.net/2401_87219716/article/details/146538258  浏览:    关键词:numpy模块综合使用

一、numpy模块的综合使用方法

# 使用矩阵的好处,矩阵对于python中列表,字典等数据类型一个一个拿来计算是会方便计算很多的,底层使用的是c语言
# 在数据分析和数据处理的时候也经常常用
import numpy as np
array = np.array([[1,2,3],[2,3,4]],np.uint8) #将原始的列表转换为矩阵
print(array)
print(array.shape) # 形状:几行几列
print(array.ndim) #维度
print(array.size)# 矩阵中的元素个数(范围)
# 创建各种各样的数组,将列表转换为矩阵,打印出来和列表的区别就是没有逗号分隔元素
# 定义创建的矩阵元素形式,一般来说位数越大就越精确,占用的内存空间也越大
a = np.array([2,3,4],dtype = np.int64)
a1 = np.array([2,3,4],dtype = np.int16)
b = np.array([2,3,4],dtype = np.int32)
c = np.array([2,3,4],dtype = np.float64)
d = np.array([2,3,4],dtype = np.float32)
print(a)
print(a1)
print(b)
print(c)
print(d)
# 定义二维矩阵
a = np.array([[1,2,3],[2,3,4]])
print(a)
# 直接生成全为0的矩阵,定义shape的时候一定要用几行几列括住
a = np.zeros((3,4),dtype = np.int16)
b = np.ones((3,4),dtype = np.int16)
c = np.empty((3,4)) # 空矩阵其实说是什么都没有,其实是非常接近于0的一个矩阵
# 定义一个有序矩阵从10到19,步长是2
d = np.arange(10,20,2)
# 定义一个有序的矩阵,从0到11,还想生成其他形状的reshape重新定义行列
e = np.arange(12).reshape((3,4))
# 自动生成num段从初始值,到结束值的矩阵
f = np.linspace(1,10,6).reshape(2,3)
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
# 基础运算
a = np.array([10,20,30,40])
b= np.arange(4)
c = a-b
d = a+b
# 将数组中的值都进行sin处理并且乘10
e = 10 * np.sin(a)
print(a,b)
print(c)
print(d)
print(b**2)
print(e)
# 判断矩阵中的那些元素大于,小于,等于某个数 会返回布尔值
print(b)
print(b<3)
print(b==3)
# 运算二维矩阵,矩阵乘法是两种形式,一种是对应位置相乘,一种是矩阵的乘法
a = np.array([[1,1],[2,3]],np.int16)
b = np.arange(4).reshape((2,2))
c = a*b
# 矩阵乘法方便快捷运算结果,图片处理,机器学习
d = np.dot(a,b)
e = a.dot(b)
print(c)
print(d)
print(e)
# 创建随机生成的矩阵
# 创建2行4列的矩阵(每一个元素都是0到1之间的随机数)
a = np.random.random((2,4))
print(a)
print(np.sum(a,axis=1)) #代表在行数中求和
print(np.min(a,axis=0))  #代表在列数中求最小值
print(np.max(a,axis=1))# 代表在行数中求最大值
# numpy基础运算第二篇
# 最大值,最小值索引
A = np.arange(2,14).reshape((3,4))
print(A)
print(A.argmin())
print(np.argmin(A))
print(A.argmax())
print(np.argmax(A))
# 矩阵平均值
print(np.mean(A,axis = 0)) #按列求平均值
print(np.average(A,axis = 1))#按行求平均值
print(A.mean())
# 这样不可以
# print(A.average())
print(np.median(A)) #中位数
# 累计求和
print(np.cumsum(A))
# 累差:每相邻两个数的累积差值
print(np.diff(A))
# 找出非零的数:会给出两个矩阵分别一个代表行号,一个代表列号,组合起来就是第几行第几列的数是非零的
print(np.nonzero(A))
# 排序:按行排列,每一行从小到大排列
A = np.arange(14,2,-1).reshape(3,4)
print(np.sort(A))
# 矩阵的转置
print(np.transpose(A))
print(A.T)
# 矩阵乘以矩阵的转置
print(A.dot(A.T))
# 给定最小值和最大值,矩阵中所以大于最大值都变成最大值,所有的最小值都变成最小值,位于中间的数不变
print(np.clip(A,5,9))
# 矩阵的索引
A = np.arange(3,15)
print(A)
print(A[3])
# 打印二维矩阵,其实第一个索引就是行
A = np.arange(3,15).reshape(3,4)
print(A)print(A[2])
# 打印第一行第一列的值
print(A[1][1])
print(A[1,1])
# 打印第三行所有值,要么不写,要么缺省写个冒号
print(A[2,:])
# 打印第三列的所有值
print(A[:,2])
# 打印第一行,第一列到第二列的数
print(A)
print(A[1,1:3])
# 使用for循环迭代数组的行
for row in A:print(row)
# 使用for循环迭代矩阵的列:使用矩阵的列使得原来的行变成列
for column in A.T:print(column)
# 将矩阵扁平化,将n维矩阵转换为一维矩阵
print(A)
print(A.flat) #这里确实是将A进行扁平化了,但是返回的是一个迭代器对象,直接打印会打印出迭代器的地址
print(A.flatten()) # 打印出扁平化的值
# 扁平化之后一个一个打印出每一个项,迭代器是支持迭代的
for item in A.flat:print(item)
# 合并array  直接生成矩阵会方便以后进行矩阵的转换
# 如果不这样做的话,会导致这样的情况出现
A = np.array([1,1,1])
print(A.T) #实际上我想输出[[1],这种纵向矩阵但是只将序列转置会输出[1,1,1]# [1],# [1]]
# 而且当我想查看A的类型的时候,会返回一个元组,元组中只有一个元素就是元素的个数(3,)
print(A.shape)
# 直接生成矩阵就可以避免这种情况
A = np.matrix([1,1,1])
B = np.matrix([2,2,2])
# 查看矩阵的类型
print(A.shape)
print(B.shape)
# 生成逆矩阵
print(A.T)
print(B.T)
# 将定义的array进行上下合并
print(np.vstack((A,B))) # vertical stack 垂直堆栈
# 将定义的array进行左右合并
print(np.hstack((A,B)) )# horizontal stack 水平堆栈
# 可以对多个array进行合并
print(np.vstack((A,B,B,A)))
print(np.vstack((A,B,B,A)).shape)
print(np.hstack((A,B,B,A)))
print(np.hstack((A,B,B,A)).shape)
# 合并,自己选择水平或者是竖直
print(np.concatenate((A,B,B,A),axis=0)) #纵向
print(np.concatenate((A,B,B,A),axis=1)) # 横向
# numpy array分割
A = np.arange(12).reshape((3,4))
# 分块矩阵:split(矩阵,几块,行还是列)
# 这个零一真的很混乱axis的,所以我建议别记录了,需要用的时候自己试试就好了
# 如果一定要理解的话就是1是左右分割,他是竖着的,想象竖着切矩阵就是左右分块的
print(A)
print(np.split(A,2,axis = 1))
print(np.split(A,3,axis = 0))
# 如果想使用不等分割,需要使用array_split方法,使用split方法会报错
print(np.array_split(A,3,axis = 1))
# 分割也可以进行一个简便的方法:
# 纵向分割:是上下分割
print(np.vsplit(A,3))
# 横向分割:是左右分割
print(np.hsplit(A,2))
# numpy array的赋值
# 赋值和浅拷贝
# 赋值会将被赋值的矩阵和原矩阵关联起来
A = np.array([[1,2,3],[4,5,6]])
B = A
C = B
A[0][1] = 9
print(A)
print(B)
print(C)
A[1,1:3] = [22,33]
print(A)
print(B)
print(C)
# 浅拷贝会直接将值拷贝过来不会将矩阵关联起来
D = A.copy()
A[1][2] = 3
print(A)
print(D) #D还是原先没有改变是的A矩阵

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词