技术标签: 属性 矩阵 计算 Python数据科学 numpy
NumPy
对于多维数组的运算,默认情况下并不进行矩阵运算。如果需要对数组进行矩阵运算,则可以调用相应的函数。
在NumPy
中,矩阵是ndarray
的子类。
在NumPy
中,数组和矩阵有着重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其他对象都是在它们之上构建的。
矩阵是继承自NumPy数组对象的二维数组对象。与数学概念中的矩阵一样,NumPy
中的矩阵也是二维的。
可以使用mat
、matrix
以及bmat
函数来创建矩阵。使用mat
函数创建矩阵时,若输入matrix
或ndarray
对象,则不会为它们创建副本。因此,调用mat函数和调用matrix(data, copy=False)
等价。
# 导入NumPy库
import numpy as np
# 使用分号隔开数据
matr1 = np.mat("1 2 3;4 5 6;7 8 9")
print('创建的矩阵为:',matr1)
# 使用列表创建矩阵
matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
print('创建的矩阵为:',matr2)
创建的矩阵为: [[1 2 3]
[4 5 6]
[7 8 9]]
创建的矩阵为: [[1 2 3]
[4 5 6]
[7 8 9]]
很多时候会根据小的矩阵创建大的矩阵,即将小矩阵组合成大矩阵。在NumPy中,可以使用bmat分块矩阵(block matrix)函数实现。
arr1 = np.eye(3)
print('创建的数组1为:',arr1)
arr2 = 3*arr1
print('创建的数组2为:',arr2)
print('创建的矩阵为:',np.bmat("arr1 arr2; arr1 arr2"))
创建的数组1为: [[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
创建的数组2为: [[3. 0. 0.]
[0. 3. 0.]
[0. 0. 3.]]
创建的矩阵为: [[1. 0. 0. 3. 0. 0.]
[0. 1. 0. 0. 3. 0.]
[0. 0. 1. 0. 0. 3.]
[1. 0. 0. 3. 0. 0.]
[0. 1. 0. 0. 3. 0.]
[0. 0. 1. 0. 0. 3.]]
在NumPy中,矩阵计算是针对整个矩阵中的每个元素进行的。与使用for循环相比,其在运算速度上更快。
matr1 = np.mat("1 2 3;4 5 6;7 8 9") #创建矩阵
print('创建的矩阵为:',matr1)
matr2 = matr1*3 #矩阵与数相乘
print('创建的矩阵为:',matr2)
print('矩阵相加结果为:',matr1+matr2) #矩阵相加
print('矩阵相减结果为:',matr1-matr2) #矩阵相减
print('矩阵相乘结果为:',matr1*matr2) #矩阵相乘
print('矩阵对应元素相乘结果为:',np.multiply(matr1,matr2))
创建的矩阵为: [[1 2 3]
[4 5 6]
[7 8 9]]
创建的矩阵为: [[ 3 6 9]
[12 15 18]
[21 24 27]]
矩阵相加结果为: [[ 4 8 12]
[16 20 24]
[28 32 36]]
矩阵相减结果为: [[ -2 -4 -6]
[ -8 -10 -12]
[-14 -16 -18]]
矩阵相乘结果为: [[ 90 108 126]
[198 243 288]
[306 378 450]]
矩阵对应元素相乘结果为: [[ 3 12 27]
[ 48 75 108]
[147 192 243]]
除了能够实现各类运算外,矩阵还有其特有的属性。
属性 | 说明 |
---|---|
T | 返回自身的转置 |
H | 返回自身的共轭转置 |
I | 返回自身的逆矩阵 |
A | 返回自身数据的2维数组的一个视图 |
print('矩阵转置结果为:',matr1.T) #转置
print('矩阵共轭转置结果为:',matr1.H) #共轭转置(实数的共轭就是其本身)
print('矩阵的二维数组结果为:',matr1.A) #返回二维数组的视图
print('矩阵的逆矩阵结果为:',matr1.I) #逆矩阵
矩阵转置结果为: [[ 2 1 -1]
[ 2 -1 2]
[ 3 0 1]]
矩阵共轭转置结果为: [[ 2 1 -1]
[ 2 -1 2]
[ 3 0 1]]
矩阵的二维数组结果为: [[ 2 2 3]
[ 1 -1 0]
[-1 2 1]]
矩阵的逆矩阵结果为: [[ 1. -4. -3.]
[ 1. -5. -3.]
[-1. 6. 4.]]
文章浏览阅读6.5k次,点赞9次,收藏186次。基于Matlab实现图像处理常用应用案例(附上100个案例源码)_matlab图像处理实例详解
文章浏览阅读2.9w次,点赞5次,收藏43次。1.直接函数调用这是最简单、最直观的方式:def test():print("This is a test")test()2.使用partial()函数在 的内置库中functools,有一个专用于生成偏函数的偏函数partial。def power(x, n):s = 1while n > 0:n = n - 1s = s * xreturn sfrom functools import partialpower_2 = partial(pow_python调用函数
文章浏览阅读4.9k次。WSL2 配置SSH 设置开机自启WSL2 配置SSH 设置开机自启先说结论完整wsl --helpWSL2 配置SSH 设置开机自启尝试了很多博客上的方法没有找到理想的解决方案,看了wsl --help之后才知道这些方法确实十分十分奇怪。先说结论在windows命令行中输入并运行如下命令即可开启WSL并启动ssh服务。wsl -d Ubuntu-20.04 -u root -e /etc/init.d/ssh start注意:要想顺利从外网ssh登录wsl2还需要在windows上设置端口映_wsl2开机自动启动
文章浏览阅读1.2w次,点赞2次,收藏2次。【尝试方法一】初始化Microsoft Visual Studio软件,还原默认值 在cmd中输入初始化VS2010命令: devenv /resetsettings 或者 devenv.exe /resetuserdata 或者 在VS→工具→导入和导出工具→重置所有设置 PS:这种方法一般可以解决问题,但是过了一段时间又会出现同样的错误 【尝试方..._devenv.exe 应用程序错误
文章浏览阅读2.2k次,点赞3次,收藏20次。第十章 序列建模:循环和递归网络官网2020-2-21 深度学习笔记10 - 序列建模:循环和递归网络 1(展开计算图,循环神经网络–经典 / 导师驱动 / 唯一单向量输出 / 基于上下文RNN建模)2020-2-23 深度学习笔记10 - 序列建模:循环和递归网络 2(双向RNN,基于编码 - 解码的序列到序列结构–不等长输出序列,计算循环神经网络的梯度)深度循环网络大多数RNN中的计..._drnn深度循环神经网络
文章浏览阅读2.9k次。ElasticSearch插件es-head安装及使用es-head需要nodejs环境编译,先看看机器中是否已经有nodejs环境,如果没有的话我们先要安装nodejs环境:一、先下载安装nodejsnodjs官网:https://nodejs.org/en/download/这里下载的新版本 v12.18.1wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xztar xf node-v12.18.1-linu_eshead
文章浏览阅读647次。的博客地址:https://juejin.cn/user/3597257779197021介绍 WindowManagerService 简称 WMS ,是系统的核心服务,主要分为四大部分,分别是窗口管理,窗口动画,输入系统中转站和Surface 管理 。WMS 的职责很多,主要的就是下面这几点:窗口管理:WMS是窗口的管理者,负责窗口的启动,添加和删除,另外窗口的大小也时有 WMS 管理的,管理..._android windowmanagerpolicy详解
文章浏览阅读1.5k次。题目:设计一个日记App,提供目标用户分析、主流程交互框图在人人都是产品经理看到这个标题,突然感到很有兴趣。众所周知,移动端输入内容远远还没有做到PC上那么便捷,是怎样的一款能让用户选择移动端而非PC来写日记呢?这一年多来,都是在这个网站上看别人的分析和经验总结,这次就不看作者的观点了,谈谈自己的一些见解。目标用户分析移动端相比PC端最大的优势,就是可以随身携带,能充分利用_写日记app的产品设计总结
文章浏览阅读3.1k次,点赞3次,收藏29次。Excel或CSV文件中根据日期及小时数据,用pandas计算该时间段24小时均值import numpy as npimport pandas as pdfrom datetime import datetime###{parse_date=True}是将{index_col='date'}这一列解析为时间索引df=pd.read_excel('***.xlsx',index_col='date',parse_date=True)c=df.groupby(df.index.hour).mea_pandas求一天12小时平均值
文章浏览阅读3.8k次,点赞2次,收藏28次。IWR6843是TI推出的单芯片毫米波雷达解决方案,其内部可通过DSP以及ARM对雷达信号进行处理分析,其采用基于eclipse的CCS开发环境可方便对雷达内部计算资源进行使用。官方demo大多为工程开发版本,需要在pyqt/matlab上位机上进行配置,将涉及雷达的关键参数通过命令串口发送到雷达板后,雷达板才开始工作。当然,这样做确实方便在开发阶段对关键参数进行调试。但当配置参数固定后,我们需要雷达上电后即可自动完成配置,并运行相关用户程序,这里就牵扯到这款6843的配置固化和程序自启动问题。 .._iwr6843
文章浏览阅读1.3w次,点赞26次,收藏38次。这两种语言,GoLang和Rust,由于它们非常相近的起源时间,被认为是彼此的竞争对手。Go的发展速度比Rust快。这两种语言有很多相似之处。GoLang和Rust之间的区别在于Go是简单的,而Rust是复杂的。然而,它们的功能和优先级在各种有意义的方面有所不同。Go与Rust并驾齐驱。这意味着这完全取决于你拥有的项目类型,主要取决于对你的业务来说什么是最好的。_rust go
文章浏览阅读4.8w次,点赞172次,收藏481次。PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。_pythorch实战