【python VS vba】(7) python与numpy (建设ing)

目录

1 numpy 的基本介绍

2  numpy里的两种新数据类型:ndarray 和 matrix

2.1 numpy特殊的数据类型

2.1.1 python的数据类型

2.1.2 首先 python原生的list 和 tuple 

2.1.3 numpy的数据类型

2.2 np.matrix() 或者 np.mat()

2.2.1 首先,两种写法相同

2.2.2 np.matrix的特点

2.2.3 np.matrix的属性

2.3 np.matrix的方法

2.3.1 比如关于 .reshape()方法

2.3.2 其他方法

2.4 np.array 只是数组,本质也可以视为矩阵?

2.5  代码例子

2.6 两者矩阵的计算方式的差别

2.6.1 线性代数里的矩阵计算和 numpy里矩阵计算的区别

2.6.2 矩阵的+

2.6.3 矩阵的-

2.6.4 矩阵的*

2.6.5 矩阵的/

3 np.matrix的相关

3.1 两种写法

3.2 优点

3.2.1 求转置矩阵方便

3.2.2 求逆矩阵方便

3.2.3 求矩阵的秩方便

3.3 相关代码试验

4 np 与多项式

4.1 创建二项式公式

4.2 求函数的导函数

4.3 设置多项式的X轴和Y轴内容

4.4 利用matplotlib 打印 带坐标轴的函数图形

4.5 代码相关

5  创建数组的各种方法

5.0 总结

5.1 np.arrange()

5.2 np.linspace()

5.3 np.random.random


1 numpy 的基本介绍

2  numpy里的两种新数据类型:ndarray 和 matrix

2.1 numpy特殊的数据类型

2.1.1 python的数据类型

  • list=[]
  • tupe=()
  • dict={}

2.1.2 首先 python原生的list 和 tuple 

  • 就不是matrix
  • 因此就没有.shape属性
  • 也不能被  reshape()
  • 包括 .shape  .ndim  .size  .dtype  .itemsize 这些属性都没有

2.1.3 numpy的数据类型

  • ndarray,是用np.array() 创建的数据类型
  • matrix,是用np.matrix() 创建的数据类型
  • 这两种数据类型都是用来保存,矩阵/向量组的
  • 写入例如   
  • A=np.array([[1,2,3],[4,5,6]])
  • 注意矩阵里,多套[] 的嵌套

2.2 np.matrix() 或者 np.mat()

2.2.1 首先,两种写法相同

首先np.matrix()=np.mat()

2.2.2 np.matrix的特点

  • np.matrix 显然就是指矩阵,或向量组
  • np.matrix 甚至还可以是三维的,比如 np.mat([[1,2,3],[1,2,3]],[[1,2,3],[1,2,3]])
  • np.matrix 可以从字符串数据 / 或数字中创建矩阵
  • np.matrix() 无论是从字符串内容创建的,还是从数字创建的,没有区别
  • 对比下,np.array 只能是数字中创建数组

2.2.3 np.matrix的属性

  • np.matrix().shape        #n行m列,
  • np.matrix().ndim          #维度数,比如(2,3) 是2维的
  • np.matrix().size           #矩阵的元素个数=n*m
  • np.matrix().dtype         #矩阵元素的类型,而不是矩阵的类型
  • np.matrix().itemsize     #矩阵元素的大小

2.3 np.matrix的方法

2.3.1 比如关于 .reshape()方法

  • 只要修改合理,可以根据总元素数,随意修改元素的实际shape
  • 比如(12,) 修改为(3,4)  或(4,3)

2.3.2 其他方法

2.3.3 np.matrix() 可以把其他类型得数组/矩阵等,转化为矩阵

2.4 np.array 只是数组,本质也可以视为矩阵?

  • 和np.matrix的区别到底是?

2.5  代码例子

  • print(A)      #可直接打印矩阵内容
  • type(A)      #可获得变量类型
  • 只有 ndarray 和 matrix  才有 .shape 属性和使用 reshape()方法

import numpy as npmylist1=[1,2,3,4,5,6]
mytuple1=(1,2,3,4,5,6)
A1=np.mat("1,2,3;10,20,30")   #mat=matrix 可以从string里创建向量组
A=np.mat([[1,2,3],[10,20,30]])
B=np.matrix([[1,2,3],[10,20,30]])
C=np.array([[1,2,3],[10,20,30]])   #np.array()只能用数字创建向量组#py语法内容
print(f"mylist1:{type(mylist1)}\n{mylist1}")
print(f"mytuple1:{type(mytuple1)}\n{mytuple1}")#numpy 语法内容
print(f"A1:{type(A1)}维数={A1.shape}\n{A1}")
print(f"A:{type(A)}维数={A.shape}\n{A}")
print(f"B:{type(B)}维数={B.shape}\n{B}")
print(f"C:{type(C)}维数={C.shape}\n{C}")#测试 向量组/矩阵.属性 .shape#python里原生的list和tuple没有shape属性
#print(mylist1.shape)
#print(mytuple1.shape)# numpy里,numpy.matrix 和 numpy.ndarray 都是有维度的矩阵/向量组
print(A1.shape)
print(A.shape)
print(B.shape)
print(C.shape)#测试  矩阵/向量组的多个属性
print(A.ndim)    #几维
print(A.shape)   #n行m列?具体的维度数
print(A.size)    #总数量个数=n*m
#print(A.type)   #报错
print(A.dtype)   #描述数组元素类型,而不是数组整体的类型
print(A.itemsize) #数组每个元素的字节大小。比如一个数组的元素为float64,它的itemsize为8(=64/8)
print(A.data)     #?# 可被reshape的部分数组,向量,向量组,矩阵?
print(f"C可被变形为\n{C.reshape(3,2)}")
# py的原生类型list tuple无法使用reshape()方法
#print(f"mylist1可被变形为{mylist1.reshape(3,2)}")

2.6 两者矩阵的计算方式的差别

2.6.1 线性代数里的矩阵计算和 numpy里矩阵计算的区别

矩阵的+,- ,* ,/, 虽然从线性代数和numpy的计算是有区别的

  • 矩阵加法,线性代数=numpy
  • 矩阵减法,线性代数=numpy
  • 矩阵乘法
  1. 线性代数里包括很多,点乘,叉乘等等
  2. numpy里除了点乘,叉乘外,还包括对应位置元素的乘法?
  • 矩阵加法,线性代数=numpy
  1. 线性代数理论上没有矩阵除法
  2. numpy还包括对应位置元素的除法?

2.6.2 矩阵的+

  • 同型矩阵的对应元素直接相加

2.6.3 矩阵的-

  • 同型矩阵的对应元素直接相减

2.6.4 矩阵的*

  • 其实这个挺有问题的
  • 矩阵的乘法分为点乘--内积 和 叉乘--外积
  • 但是 numpy提供了一种同型矩阵对应元素相乘的算法

2.6.5 矩阵的/

  • 理论上,线性代数里并没有矩阵的除法吧
  • 而numpy提供了一种,两个同型矩阵,对应元素/的算法。。。。

3 np.matrix的相关

3.1 两种写法

  • np.matrix()=np.mat()

3.2 优点

3.2.1 求转置矩阵方便

  • 转置矩阵方法1:A.T
  • 转置矩阵方法1:np.transpose(A)

3.2.2 求逆矩阵方便

  • 逆矩阵方法1:A.I  (注意,ndarray是不能这样求逆矩阵的)
  • 逆矩阵方法2:

3.2.3 求矩阵的秩方便

  • 矩阵的秩方法1:np.linalg.matrix_rank(A))

3.3 相关代码试验

import numpy as npA=np.mat([[1,2,3],[10,20,30]])
print(A)
print(A.T)
print(A.I)
print("A的秩为:{}".format(np.linalg.matrix_rank(A)))
print()A=np.mat([[1,2,3],[10,20,30]])
print(A)
A=np.mat([[1,2,3],[10,20,30]])
print(A.T)
A=np.mat([[1,2,3],[10,20,30]])
print(A.I)
print()A=np.mat([[1,2,3],[10,20,30]])
print(A)
print(A.I)
print()

4 np 与多项式

  • numpy 可以支持多项式的计算
  • 配合  matplotlib 可以显示多项式的图形

4.1 创建二项式公式

#np与二项式
# y = 2x^2 + 4x + 8
arr = np.array([2, 4, 8])
func = np.poly1d(arr)

4.2 求函数的导函数

# m=1表示求一阶导数,依次类推
func1 = func.deriv(m=1)

4.3 设置多项式的X轴和Y轴内容

# 设置定义域-5,5;并将定义域等分了100份
x = np.linspace(-5, 5, 100)

y = func(x)
y1 = func1(x)

4.4 利用matplotlib 打印 带坐标轴的函数图形

  • # 绘制
    plt.plot(x, y, label="{}".format(func))
    plt.plot(x, y1, label="{}".format(func1))
  • plt.xlabel("x")
  • plt.legend()
  • plt.show()

# 绘制
plt.plot(x, y, label="{}".format(func))
plt.plot(x, y1, label="{}".format(func1))
plt.xlabel("x")
plt.ylabel("y")

# 显示图例
plt.legend()

# 显示图像
plt.show()

4.5 代码相关

import numpy as np
import matplotlib.pyplot as plt#np与二项式
# y = 2x^2 + 4x + 8
arr = np.array([2, 4, 8])
func = np.poly1d(arr)# m=1表示求一阶导数,依次类推
func1 = func.deriv(m=1)# 设置定义域-5,5;并将定义域等分了100份
x = np.linspace(-5, 5, 100)y = func(x)
y1 = func1(x)# 打印多项式
print(func)
# 打印多项式对应的一阶导数
print(func1)# 绘制
plt.plot(x, y, label="{}".format(func))
plt.plot(x, y1, label="{}".format(func1))
plt.xlabel("x")
plt.ylabel("y")# 显示图例
plt.legend()print("多项式的根:")
print(np.roots(func))# 显示图像
plt.show()



 

5  创建数组的各种方法

5.0 总结

  • 方法1,前面的几种手动方法
  • 方法2, reshape()
  • 方法3,

5.1 np.arrange()

np.arrange(1,10,1)

5.2 np.linspace()

  • np.linspace(10)
  • np.linspace(1,10)
  • np.linspace(1,10,50)

5.3 np.random.random

  • np.random.random(10)
  • 生成的都是[0,1)的数,数量为10个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PicGo实现Typora图片自动上传GitHub

文章目录 一. 引言二. 原理三. 配置3.1 GitHub 设置3.2 下载配置 PicGo3.3 配置 Typora3.4 使用 一. 引言 Typora是一款非常好的笔记软件,但是有一个比较不好的地方:默认图片是存放在本地缓存中。这就会导致文件夹一旦被误删或电脑系统重装而忘记备份文件…

18、XSS——cookie安全

文章目录 1、cookie重要字段2、子域cookie机制3、路径cookie机制4、HttpOnly Cookie机制5、Secure Cookie机制6、本地cookie与内存cookie7、本地存储方式 一般来说,同域内浏览器中发出的任何一个请求都会带上cookie,无论请求什么资源,请求时&…

西南科技大学C++程序设计实验六( 继承与派生一)

一、实验目的 1. 理解不同继承属性对派生类访问基类成员的区别 2. 掌握单继承程序编写 二、实验任务 1、调试下列程序,并在对程序进行修改后再调试,指出调试中的出错原因(该题中A为基类,B为派生类,B以public方式继承A) 重点:理解不同继承方式数据的访问权限,派生类…

.kann勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言: 在数字化的今天,.kann勒索病毒等数字威胁正日益猖狂,给个人和企业的数据安全带来了巨大威胁。本文将深入介绍.kann勒索病毒的特征,提供有效的数据恢复方法,并分享一些预防措施,助您更好地在数字世界…

Java利用TCP实现简单的双人聊天

一、创建新项目 首先创建一个新的项目,并命名为聊天。然后创建包,创建两个类,客户端(SocketClient)和服务器端(SocketServer) 二、实现代码 客户端代码: package 聊天; import ja…

Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 摘要1.介绍2.相关工作异常检测Memory networks 3. Memory-augmented Autoencoder3.1概述3.2. Encoder and Decoder3.3. Memory Module with Attention-based S…

mysql知识分享(包含安装卸载)(一)

如果博客有错误,请佬指正。 目录 注意:打开cmd时要有管理员身份打开,重要 为何使用数据库? 数据库的相关概念 关系型数据库 关系型数据库设计规则 表,记录,字段 表的关联关系 一对一关联 一对多关系 …

西南科技大学C++程序设计实验七(继承与派生二)

一、实验目的 1. 掌握多继承程序设计 2. 掌握虚基类编程 3. 拓展学习可视化程序设计中的继承与派生应用 二、实验任务 重点:掌握虚基类的定义与实现,拓展其功能。 阅读分析、完善程序。下面程序(1)与程序(2)分别是没有使用虚基类和使用虚基类的代码,其中A是最上层基…

【二分答案法】寻找峰值

题目:162. 寻找峰值 - 力扣(LeetCode) 题目描述: 题目分析: (1)据题知,索引-1、索引n(n为数组长度)处的元素都默认为无穷小,我们可以在一开始特判…

SLAM算法与工程实践——SLAM基本库的安装与使用(2):OpenCV库

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接,本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址: SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

RabbitMQ创建新用户,并给用户添加角色和授权

一、进入容器 1.1 查看运行容器的详细信息 docker ps -a1.2 进入容器命令 docker exec -it 容器ID /bin/bash 或 docker exec -it 容器name bash 1.3 退出容器命令 exit 或者 CtrlQP 二、操作RabbitMQ 2.1 查看用户列表 注:先进入到容器内部 rabbitmqctl list_user…

SQL语言重温

数据库语言重温 笔记背景SQL教程一些最重要的 SQL 命令SQL WHERE 子句SQL AND & OR 运算符SQL ORDER BY 关键字 笔记背景 由于工作需要,现重温简单SQL语言,笔记记录如下。 SQL教程 SQL(Structured Query Language:结构化查询语言&…

【PyTorch】权重衰减

文章目录 1. 理论介绍2. 实例解析2.1. 实例描述2.2. 代码实现 1. 理论介绍 通过对模型过拟合的思考,人们希望能通过某种工具调整模型复杂度,使其达到一个合适的平衡位置。权重衰减(又称 L 2 L_2 L2​正则化)通过为损失函数添加惩…

uni-app 微信小程序之加载行政区图

文章目录 1. 实现效果2. 实现步骤 1. 实现效果 2. 实现步骤 使用三方组件 ucharts echarts 高性能跨全端图表组件页面导入引入的三方组件 组件demo代码 <template><view class"qiun-columns"><view class"cu-bar bg-white margin-top-xs"…

文献阅读:基于改进ConvNext的玉米叶片病害分类

文献阅读&#xff1a;基于改进ConvNext的玉米叶片病害分类 CBAM注意力机制模块&#xff1a; 1&#xff1a;通道注意力模块&#xff0c;对输入进来的特征层分别进行全局平均池化&#xff08;AvgPool&#xff09;和全局最大池化&#xff08;MaxPool&#xff09;&#xff08;两个…

可视化监控云平台/智能监控平台EasyCVR国标设备开启音频没有声音是什么原因?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。GB28181视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存…

ROS-ROS通信机制-参数服务器

文章目录 一、基础理论知识二、C实现三、Python实现 一、基础理论知识 参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点…

多人聊天UDP

服务端 package 多人聊天;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList;…

零基础小白怎么准备蓝桥杯-蓝桥杯竞赛经验分享

零基础小白怎么准备蓝桥杯-蓝桥杯竞赛经验分享 前言竞赛简介竞赛目的如何备战1.基础学习2.实战训练&#xff08;非常重要&#xff09; 资料分享 前言 博主在蓝桥杯中获得过十四届Java B 组的省一国二&#xff0c;本文为大家介绍一下蓝桥杯并分享一下自己的参赛经验。 竞赛简介…

封装校验-----Vue3+ts项目

登录校验页面 <script setup lang"ts"> import { ref } from vue import { mobileRules, passwordRules } from /utils/rules const mobile ref() const password ref() </script><!-- 表单 --><van-form autocomplete"off">&l…