当前位置: 首页 > news >正文

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矩阵

相关文章:

  • 进程间关系与守护进程
  • BGP基础配置实验
  • 机械物理:水力发电站工作原理是什么?
  • EdgeOne Pages MCP 入门教程
  • LVGL简易计算器实战
  • 在 Java 中使用 JSON Pointer 高效提取 JSON 数据
  • C++入门篇——类和对象(下)
  • YashanDB(崖山数据库)V23.4 LTS 正式发布
  • 学习黑客5 分钟深入浅出理解Windows Editions
  • ESG在2050,我们听到了另一种声音 | 活动回顾
  • JavaSE核心知识点02面向对象编程02-07(枚举)
  • 深入理解 JavaScript 中的 FileReader API:从理论到实践
  • Python基础语法(中)
  • 多模态大语言模型arxiv论文略读(六十八)
  • 学习黑客5 分钟小白弄懂Windows Desktop GUI
  • TikTok 运营干货:内容创作与 AI 增效
  • 硬件中断请求号和lspci命令查看到的device id有关系吗?
  • 理解c++中explicit关键字的作用
  • 【文献阅读】地方政府驱动企业参与乡村振兴的机制——乡村振兴注意力视角的分析
  • 多智体具身人工智能:进展与未来方向(上)
  • 体坛联播|安切洛蒂执掌巴西男足,字母哥尝试离开雄鹿
  • 时隔4年多,这一次普京和泽连斯基能见面吗?
  • 深一度|在亚马尔的天才面前,姆巴佩戴上“帽子”又如何
  • 上海工匠学院首届学历班56人毕业,新一届拟招生200人
  • 宝妈称宝宝在粽子中吃出带血创可贴,来伊份:已内部排查
  • 领证不用户口本,还需哪些材料?补领证件如何操作?七问七答