Numpy中的矩阵运算

一、Matrix和Array

        Matrix名为矩阵,Array名为阵列,它们都可以作为矩阵运算的结构,功能上Matrix是Array的子集,Matrix运算符相较于Array简单。本文章主要讲解Numpy中的Matrix和Array关于矩阵运算的区别,代码部分已经给出了运算结果,大家仔细体会就明白了。

二、Matrix和Array的相互转换

import numpy as npa = [1, 2, 3]
b = [2, 3, 4]
c = [[1], [2], [3]]print(type(a))  # list
print(np.mat(a))  # [[1 2 3]]
print(type(np.mat(a)))  # matrix:注意是二维
print(np.array(a))  # [1 2 3]
print(type(np.array(a)))  # ndarray
print(type(np.mat(np.array(a)))) #matrix

三、矩阵乘法--multiply()、dot()、 matmul()、' * '、'@'辨析

注意:所有的一维向单独看时,都当成是列向量(竖着放的),虽然打印的时候是横着放!!!

元素相乘:multply()
矩阵相乘:dot()、matmul()、’@’
’ * ': 在数组操作中,作为元素相乘;在矩阵操作中作为矩阵相乘

在数组Array上操作

a1 = np.array([[1,2,3],[4,5,6]])
b1 = np.array([1,2,3])
a2 = np.array([1,2,3])
b2 = np.array([1,2,3])a1 * b1 # 对应元素相乘
[[ 1  4  9][ 4 10 18]]a1 @ b1 # 矩阵相乘
[14 32]a2 * b2 # 对应元素相乘
[1 4 9]a2 @ b2 # 矩阵相乘
14np.multiply(a1, b1), np.multiply(a2, b2) # 对应元素相乘
(array([[ 1,  4,  9],[ 4, 10, 18]]), array([1, 4, 9]))np.dot(a1, b1), np.dot(a2, b2) # 矩阵相乘
(array([14, 32]), 14)np.matmul(a1, b1), np.matmul(a2, b2) # 矩阵相乘
(array([14, 32]), 14)

在矩阵上操作

a3 = np.matrix([[1,2,3],[4,5,6]])
b3_1 = np.matrix([1,2,3])
b3 = np.matrix([[1],[2],[3]])a3 * b3 # 矩阵相乘
[[14][32]]a3 @ b3 # 矩阵相乘
[[14][32]]np.multiply(a3,b3_1) # 对应元素相乘
matrix([[ 1,  4,  9],[ 4, 10, 18]])np.dot(a3, b3) # 矩阵相乘
matrix([[14],[32]])np.matmul(a3, b3) # 矩阵相乘
matrix([[14],[32]])

四、矩阵的转置和逆

  关键点:注意矩阵是否可逆

# 转置
print(np.mat(a).T)
print(np.array(a).T)# Matrix的逆为:
A = [[1, 2], [3, 4]]
print(np.mat(A).I)
# Array的逆为:
print(np.linalg.inv(A))

五、关于shape和一维向量

例如:a,b的shape为 (3, ),计算 a*b
关键就在这一步的转换,此处有两个向量相乘,那么:
谁在左边,就在左边添加维度1:a 在左,那么 a 的 shape 运算时为 (1,3)
谁在右边,就在右边添加维度1:b 在右,那么 b 的 shape 运算时为 (3,1)

a = np.array([[1, 2, 3], [4, 5, 6]])  # (2, 3)
b = np.array([1, 2, 3]) # (3,)
print(a.dot(b))  # [14 32]            (2,3)* (3,1) -> (2,1)
print(np.matmul(a, b))  # [14 32]     (2,3)* (3,1) -> (2,1)# 如果是 b.dot(a)
# b 在左, (1, 3) * (2, 3)  报错
# 如果把 a 换成 (3,2),就可以运算

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

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

相关文章

Mysql数据库:快速入门

目录 一. 介绍 1. 数据库基础概念 2 MySQL简介 二. 安装与配置 1. 下载与安装 MySQL 2. 配置 MySQL 三. 基本操作 1. 数据库的创建与删除 3 数据操作语言(DML) 4 数据查询语言(DQL) 5 数据控制语言(DCL&…

年终总结:我的2023编程之旅

1. 成果回顾 在这一年中,我成功地完成了多个项目,其中最重要的是我们团队开发的“智能数据分析平台”。我负责了后端开发的核心部分,该平台目前每天处理超过100万条数据,为我们的客户提供了宝贵的信息和建议。同时,我…

2024.1.19 网络编程 作业

思维导图 练习题 1> UDP传输实现聊天室 服务器端 #include <myhead.h> #define SER_IP "192.168.125.151" #define SER_PORT 9999 typedef struct Msg {char user[32]; //用户名int type; //执行操作1.登录、2.发消息、0.退出char text[1024]; …

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1&#xff09;基于查询的 CDC 和基于日志的 CDC2&#xff09;Flink CDC3&#xff09;Flink CDC原理简述4&#xff09;基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

在 Python 中检查一个数字是否是同构数

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 同构数&#xff0c;又称为自守数或自同构数&#xff0c;是一类特殊的数字&#xff0c;它们具有一种有趣的性质&#xff1a;将其平方后的数字&#xff0c;可以通过某种方式重新排列得到原来的数字。本文将详细介绍…

Java读取制表符文本转换为JSON

在Java开发中&#xff0c;处理各种数据格式是常见的任务。本文将介绍如何使用Java读取制表符文本文件&#xff0c;并将其转换为JSON格式&#xff0c;以便于后续的数据处理和分析。我们将使用Java中的相关库来实现这个过程&#xff0c;并提供详细的代码示例。 引言&#xff1a;…

4654. 消除游戏

4654. 消除游戏 - AcWing题库 #include <iostream> #include <vector> #include <cstring> using namespace std;const int N 1e6 10; char s[N]; int l[N], r[N]; vector<int> v, p; bool st[N]; void ins(int i) {if (st[i]) return;st[i] true;…

2024Java高频面试题之MQ消息中间件,面试都问些什么?(附详细答案)

最近很多同学问我有没有java学习资料&#xff0c;我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号&#xff1a;“ Tom聊架构 ”&#xff0c; 回复暗号&#xff1a;“ 578”即…

Dockerfile镜像构建

Dockerfile镜像构建 1、部署harbor仓库 #部署docker #解压harbor安装包 rootharbor:~# cd /app/harbor/ rootharbor:/app/harbor# ll total 597560 drwxr-xr-x 3 root root 180 Jan 13 13:17 ./ drwxr-xr-x 4 root root 77 Jan 13 13:14 ../ drwxr-xr-x 3 root …

element-ui 打包流程源码解析(下)

目录 目录结构和使用1&#xff0c;npm 安装1.1&#xff0c;完整引入1.2&#xff0c;按需引入 2&#xff0c;CDN3&#xff0c;国际化 接上文&#xff1a;element-ui 打包流程源码解析&#xff08;上&#xff09; 文章中提到的【上文】都指它 ↑ 目录结构和使用 我们从使用方式来…

零基础学Python(3)— 注释、代码缩进和编码规范

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。在使用Python语言进行编程的时候&#xff0c;需要遵循一定的规范标准。本节课就带大家了解下Python语言在注释、缩进和编码方面的规范!~&#x1f308; 目录 &#x1f680;1.注释 &#x1f680;2.代码缩进 &#x1f68…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--大模型、扩散模型、视觉导航

专属领域论文订阅 关注{晓理紫|小李子}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 VX关注&#xff0c;并留下邮箱可获得每日定时推送 分类: 大语言模型LLM视觉模型VLM扩散模型视觉导航具身智能&#xff0c;机器人强化…

网络爬虫原理介绍

网络爬虫是一种按照一定规则自动浏览、检索网页信息的程序或者脚本。它能够自动请求网页&#xff0c;并将所需要的数据抓取下来。通过对抓取的数据进行处理&#xff0c;从而提取出有价值的信息。 Python 爬虫是指用 Python 语言编写的网络爬虫程序。Python 爬虫几乎成了网络爬…

Mysql三种常用的删除方式

前言 在 MySQL 中&#xff0c;有三种常用的方式可以删除表中的数据或整个表&#xff0c;它们分别是 TRUNCATE、DROP 和 DELETE。 TRUNCATE TABLE TRUNCATE TABLE属于DDL语言&#xff0c;不走事务&#xff0c;数据不会回滚 TRUNCATE TABLE 语句会删除表中的所有数据&#xff…

深入Android S (12.0) 探索Framework之输入子系统InputReader的流程

Framework层之输入系统 第一篇 深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动 第二篇 深入Android S (12.0) 探索Framework之输入子系统InputReader的流程 文章目录 Framework层之输入系统前言一、基础知识1、输入子系统2、INotify 与 Epoll2.1、INotify 机制…

SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver、postgresql)手动切换

场景 SpringBootMybatisPlusdynamic-datasources实现连接Postgresql和mysql多数据源&#xff1a; SpringBootMybatisPlusdynamic-datasources实现连接Postgresql和mysql多数据源-CSDN博客 上面实现通过注解和配置文件的方式去进行多数据源操作。 如果业务需求&#xff0c;比…

Python 循环结构的一些案例练习

题目1&#xff1a;找出100-999之间的水仙花数&#xff08;各位数字的立方和刚好等于这个数本身&#xff09; 如&#xff1a;153 1^3 5^3 3^3算法分析&#xff1a; 123 // 100 1 ---> 23 获取百位数 123 // 10 12 % 10 2 --> 获取十位数&#xff08;法一&#x…

Spark流式读取文件数据

流式读取文件数据 from pyspark.sql import SparkSession ss SparkSession.builder.getOrCreate() # todo 注意1&#xff1a;流式读取目录下的文件 --》一定一定要是目录&#xff0c;不是具体的文件&#xff0c;# 目录下产生新文件会进行读取# todo 注意点2&#xff1…

大模型日报-20240120

这里写目录标题 视觉Mamba来了&#xff1a;速度提升2.8倍&#xff0c;内存能省87%一键实景转动画&#xff0c;清华系初创公司全球首发4D骨骼动画框架&#xff0c;还能生成个性化角色如何利用革命性的蛋白质结构工具来发现药物&#xff1f;AlphaFold 发现了数千种可能的致幻剂扎…

Unity关于纹理图片格式带来的内存问题和对预制体批量格式和大小减半处理

我们经常会遇到内存问题&#xff0c;这次就是遇到很多图片的默认格式被改成了RGB32&#xff0c;导致Android打包后运行内存明显增加。 发生了什么 打包Android后&#xff0c;发现经常崩溃&#xff0c;明显内存可能除了问题&#xff0c;看了内存后发现了问题。 见下图&#xf…