Numpy创建NumPy矩阵的简单实现

 更新时间:2023年02月10日 11:10:32   作者:mighty13  
本文主要介绍了Numpy创建NumPy矩阵的简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

创建NumPy矩阵

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

在NumPy中,矩阵是ndarray的子类。

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

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

1. 创建矩阵

可以使用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]]

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

到此这篇关于Numpy创建NumPy矩阵的简单实现的文章就介绍到这了,更多相关Numpy创建NumPy矩阵内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python爬虫防封ip的一些技巧

    Python爬虫防封ip的一些技巧

    这篇文章主要介绍了Python爬虫防封ip的一些技巧,对平时学习爬虫有所帮助,感兴趣的朋友可以了解下
    2020-08-08
  • Linux环境下GPU版本的pytorch安装

    Linux环境下GPU版本的pytorch安装

    使用默认的源地址下载速度很慢,所以一般都是使用国内源,今天花了点时间配置安装,所以记录一下,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 使用Python调取任意数字资产钱包余额功能

    使用Python调取任意数字资产钱包余额功能

    那资产放在钱包的时候,如何来监控余额呢?任何数字资产都可以使用区块浏览器来查询余额,那我们只要从此着手,用Python调取区块浏览器,来查询余额就能实现所有资产的余额监控,感兴趣的朋友跟随小编一起看看吧
    2019-08-08
  • 使用PySide多线程处理图形界面卡顿问题详解

    使用PySide多线程处理图形界面卡顿问题详解

    这篇文章主要介绍了使用PySide多线程处理图形界面卡顿问题,在制作图形界面时,只用一个线程很容易导致卡顿无响应,一旦主线程被阻塞,那么整个图形界面都会无法继续使用,为了解决这个问题,就得使用多线程,需要的朋友可以参考下
    2025-04-04
  • Python标准库sched模块使用指南

    Python标准库sched模块使用指南

    这篇文章主要介绍了Python标准库sched模块使用的相关资料,需要的朋友可以参考下
    2017-07-07
  • 通过OpenCV实现对指定颜色的物体追踪

    通过OpenCV实现对指定颜色的物体追踪

    这篇文章主要介绍的是通过OpenCV实现对特定颜色的物体追踪,文中实验用的是绿萝的树叶。本文的示例代码讲解详细,对学习OPenCV有一定的帮助,感兴趣的小伙伴可以了解一下
    2021-12-12
  • 基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解

    基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解

    下面小编就为大家带来一篇基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python UnicodeEncodeError: ''gbk'' codec can''t encode character 解决方法

    Python UnicodeEncodeError: ''gbk'' codec can''t encode chara

    这篇文章主要介绍了Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法,需要的朋友可以参考下
    2015-04-04
  • python之os路径被转义的问题

    python之os路径被转义的问题

    这篇文章主要介绍了python之os路径被转义的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 在pytorch中为Module和Tensor指定GPU的例子

    在pytorch中为Module和Tensor指定GPU的例子

    今天小编就为大家分享一篇在pytorch中为Module和Tensor指定GPU的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论