Numpy简易教程5——创建NumPy矩阵_numpy创建矩阵-程序员宅基地

技术标签: 属性  矩阵  计算  Python数据科学  numpy  

创建NumPy矩阵

NumPy对于多维数组的运算,默认情况下并不进行矩阵运算。如果需要对数组进行矩阵运算,则可以调用相应的函数。

NumPy中,矩阵是ndarray的子类。

NumPy中,数组和矩阵有着重要的区别。NumPy提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其他对象都是在它们之上构建的。

矩阵是继承自NumPy数组对象的二维数组对象。与数学概念中的矩阵一样,NumPy中的矩阵也是二维的

1. 创建矩阵

可以使用matmatrix以及bmat函数来创建矩阵。使用mat函数创建矩阵时,若输入matrixndarray对象,则不会为它们创建副本。因此,调用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]]

2. 创建分块矩阵

很多时候会根据小的矩阵创建大的矩阵,即将小矩阵组合成大矩阵。在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.]]

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]]

4. 矩阵属性

除了能够实现各类运算外,矩阵还有其特有的属性。

属性 说明
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.]]
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mighty13/article/details/119652459

智能推荐

基于Matlab实现图像处理常用应用案例(附上100个案例源码)_matlab图像处理实例详解-程序员宅基地

文章浏览阅读6.5k次,点赞9次,收藏186次。基于Matlab实现图像处理常用应用案例(附上100个案例源码)_matlab图像处理实例详解

如何在 Python 中调用函数?九种方法任你挑选_python调用函数-程序员宅基地

文章浏览阅读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调用函数

WSL2 配置SSH 设置开机自启_wsl2开机自动启动-程序员宅基地

文章浏览阅读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开机自动启动

解决devenv.exe应用程序错误,应用程序发生异常_devenv.exe 应用程序错误-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏2次。【尝试方法一】初始化Microsoft Visual Studio软件,还原默认值 在cmd中输入初始化VS2010命令: devenv /resetsettings 或者 devenv.exe /resetuserdata 或者 在VS→工具→导入和导出工具→重置所有设置 PS:这种方法一般可以解决问题,但是过了一段时间又会出现同样的错误 【尝试方..._devenv.exe 应用程序错误

2020-2-24 深度学习笔记10 - 序列建模:循环和递归网络 3(深度循环网络,递归神经网络,长期依赖的挑战,回声状态网络ESN)_drnn深度循环神经网络-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏20次。第十章 序列建模:循环和递归网络官网2020-2-21 深度学习笔记10 - 序列建模:循环和递归网络 1(展开计算图,循环神经网络–经典 / 导师驱动 / 唯一单向量输出 / 基于上下文RNN建模)2020-2-23 深度学习笔记10 - 序列建模:循环和递归网络 2(双向RNN,基于编码 - 解码的序列到序列结构–不等长输出序列,计算循环神经网络的梯度)深度循环网络大多数RNN中的计..._drnn深度循环神经网络

ElasticSearch插件es-head安装及使用_eshead-程序员宅基地

文章浏览阅读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

随便推点

Android开发中的WMS详细解析-程序员宅基地

文章浏览阅读647次。的博客地址:https://juejin.cn/user/3597257779197021介绍 WindowManagerService 简称 WMS ,是系统的核心服务,主要分为四大部分,分别是窗口管理,窗口动画,输入系统中转站和Surface 管理 。WMS 的职责很多,主要的就是下面这几点:窗口管理:WMS是窗口的管理者,负责窗口的启动,添加和删除,另外窗口的大小也时有 WMS 管理的,管理..._android windowmanagerpolicy详解

小米校招产品作业解读:设计一款日记APP_写日记app的产品设计总结-程序员宅基地

文章浏览阅读1.5k次。题目:设计一个日记App,提供目标用户分析、主流程交互框图在人人都是产品经理看到这个标题,突然感到很有兴趣。众所周知,移动端输入内容远远还没有做到PC上那么便捷,是怎样的一款能让用户选择移动端而非PC来写日记呢?这一年多来,都是在这个网站上看别人的分析和经验总结,这次就不看作者的观点了,谈谈自己的一些见解。目标用户分析移动端相比PC端最大的优势,就是可以随身携带,能充分利用_写日记app的产品设计总结

用python的pandas库计算24小时均值_pandas求一天12小时平均值-程序员宅基地

文章浏览阅读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小时平均值

毫米波雷达IWR6843-配置自启动-程序员宅基地

文章浏览阅读3.8k次,点赞2次,收藏28次。IWR6843是TI推出的单芯片毫米波雷达解决方案,其内部可通过DSP以及ARM对雷达信号进行处理分析,其采用基于eclipse的CCS开发环境可方便对雷达内部计算资源进行使用。官方demo大多为工程开发版本,需要在pyqt/matlab上位机上进行配置,将涉及雷达的关键参数通过命令串口发送到雷达板后,雷达板才开始工作。当然,这样做确实方便在开发阶段对关键参数进行调试。但当配置参数固定后,我们需要雷达上电后即可自动完成配置,并运行相关用户程序,这里就牵扯到这款6843的配置固化和程序自启动问题。 .._iwr6843

2024年,Rust和Go学哪个更好?_rust go-程序员宅基地

文章浏览阅读1.3w次,点赞26次,收藏38次。这两种语言,GoLang和Rust,由于它们非常相近的起源时间,被认为是彼此的竞争对手。Go的发展速度比Rust快。这两种语言有很多相似之处。GoLang和Rust之间的区别在于Go是简单的,而Rust是复杂的。然而,它们的功能和优先级在各种有意义的方面有所不同。Go与Rust并驾齐驱。这意味着这完全取决于你拥有的项目类型,主要取决于对你的业务来说什么是最好的。_rust go

PyTorch深度学习实战(3)——使用PyTorch构建神经网络_pythorch实战-程序员宅基地

文章浏览阅读4.8w次,点赞172次,收藏481次。PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。_pythorch实战

推荐文章

热门文章

相关标签