Numpy创建NumPy矩阵的简单实现
作者:mighty13 发布时间:2022-08-22 15:08:25
创建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.]]
来源:https://blog.csdn.net/mighty13/article/details/119652459


猜你喜欢
- 本文实例讲述了PHP中curl_setopt函数用法。分享给大家供大家参考。具体分析如下:curl_setopt函数是php中一个重要的函数
- 最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。
- 先举个例子,分别以不指定编码、指定编码为 utf-8、指定编码为 utf-8-sig 三种方式来做比较,再将写入 csv 文件和 txt 文
- 1,为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用
- 定义返回单值def my_abs(x): if x >= 0: return x &
- 在本文中,我挑选了15个最有用的软件包,介绍它们的功能和特点1. DashDash 是比较新的软件包,它是用纯 Python 构建数据可视化
- 什么是命令行参数?命令行参数是在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。并非所有程序都有命令行参数,因为并非
- 经过倒腾12306的登录,还是实现了,请求头很重要...各位感兴趣的可以继续写下去.....import sysimport timeimp
- 前言远程执行命令有什么用?为什么要远程执行命令? 如果你只有2,3台服务器需要管理的时候,远程执行命令确实没有没多大作用,你可以登录到每台服
- 如下所示:enc = OneHotEncoder(categorical_features=np.array([0,1,2]),n_valu
- 在Python中创建进程有两种方式,第一种是:from multiprocessing import Processimport timed
- 今天学习了小程序实现路由跳转,我在操作的时候在控制台出现以下错误信息。翻译过来的意思是:(承诺中)微程序错误{“errMsg”:“n”avi
- 导入相关包import timeimport pydashimport base64import requestsfrom lxml imp
- 什么是协程协程是python种一种实现多任务的方式,他是一种比线程更加小的单元,占用更小的执行单元(资源),为啥说他是一个执行单元,因为他自
- vue开发依赖的相关配置Vue SSR 指南今天先做客户端方面的配置,明天再做服务端的部分。那么马上开始吧~修改部分代码脚手架生成的代码肯定
- 一、函数概述简单来说 函数 就是自己定义的一段 小程序 方便自己调取使用def 用来定义函数的关键字 也就是这个函数的名字函数运行到retu
- 傅里叶变换图像处理一般分为空间域处理和频率域处理。空间域处理是直接对图像内的像素进行处理。空间域处理主要划分为灰度变换和空间滤波两种形式。灰
- 在1943年,沃伦麦卡洛可与沃尔特皮茨提出了第一个脑神经元的抽象模型,简称麦卡洛可-皮茨神经元(McCullock-Pitts neuron
- 什么是python的迭代如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Ite
- vue常用内置指令<!DOCTYPE html><html lang="en"><head