python多维矩阵基础运算中的一点困惑
ps 还是deeplung的代码,心情烦躁连测试都麻烦啊!!
遇到的问题简单来说就是当多维矩阵运算时候,脑袋不够用了想像不过来。
1.一个(72, 72, 108, 3, 5)矩阵A ,用12个(36,36, 36, 3, 5)矩阵B[0]到B[11]替换,B是一个矩阵列表。这个还比较好理解。
for iz in range(2):for ih in range(2):for iw in range(3):sz = iz * 36ez = (iz + 1) * 36sh = ih * 36eh = (ih + 1) * 36sw = iw * 36ew = (iw + 1) * 36ii=iz*(2*3)+ih*3+iwA[sz:ez, sh:eh, sw:ew] = B[ii]
2.比较难的是(72, 1, 1, 1)矩阵A,(72, 72, 108, 3)矩阵B,(1,1,1,3)矩阵C。
然后代码中有一段A+B*C的操作这里面的是矩阵对应位置相乘和相加的操作,而不是(1,3)×(3,1)=(1,1)这样的操作。具体发生了什么我们可以用以下代码来看看。
import numpy as np
c = -1 * np.ones((2, 2, 2, 3))
b = -1 * np.ones((1, 1, 1, 3))
e = np.arange(5,16,5)
f=e.reshape((1, 1, 1, -1))
h = np.ones((2,1,1,1))
print(f.shape)
d=c*b
g=c*f+h
print(d)
print(g)
(1, 1, 1, 3)
[[[[1. 1. 1.][1. 1. 1.]][[1. 1. 1.][1. 1. 1.]]][[[1. 1. 1.][1. 1. 1.]][[1. 1. 1.][1. 1. 1.]]]]
[[[[ -4. -9. -14.][ -4. -9. -14.]][[ -4. -9. -14.][ -4. -9. -14.]]][[[ -4. -9. -14.][ -4. -9. -14.]][[ -4. -9. -14.][ -4. -9. -14.]]]]
从最后的结果回推出简单可表述为B*C就是先将B看成72×72×108个 长度为3的数组,而C就是1×1*1个长度为3的数组,B的每个数组与C的那个数组对应位置相乘,再还原回去(72,72,108,3)即可。
而A+B*C就是类似,首先将B*C看成72×108×3个长度为72的数组,而A就是1×1*1个长度为72的数组,B*C的每个数组与A的那个数组对应位置相乘,在还原回去(72,72,108,3)即可。
总结,涉及到多维矩阵时候一定不要惊慌。其实不要将他们看的很复杂处理它们其实跟处理低维矩阵是一样的。比如A为(2,2,3,4)的矩阵,直接很难想象,你可一看成是2个(2,3,4)的矩阵按照一定顺序拼凑起来的,也可以看成是4个(2,2,3)矩阵按照一定顺序拼凑起来的。当然你还可以看成是2*3*4个长度为2的数组按照一定顺序拼凑起来的。
多维矩阵也就那样,希望这篇博客对你有所帮助.
python多维矩阵基础运算中的一点困惑相关推荐
- Python运维开发基础01-语法基础【转】
开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...
- Python运维开发基础09-函数基础【转】
上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能import s ...
- Python运维开发基础10-函数基础【转】
一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...
- 理解多维矩阵乘积运算和对应的广播机制
神经网络中的多维矩阵乘积运算: 多维矩阵乘积运算乘积两项的维度都应该是相同的,如果有论文中有遇到矩阵乘积的两项维度不一致,那就考虑它计算时是使用了广播机制(如YOLACT).所有大于二维的,最终都是以 ...
- python矩阵运算_Python矩阵常见运算操作实例总结
本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...
- 以下关于python二维数据的描述中错误的是_python第二章1
1. (单选题) Python 3.x 版本的保留字总数是( ) A.27B.29C.33D.62. (单选题) 以下选项中,不是 Python 语言保留字的是( ) A.whileB.passC.d ...
- python 二维矩阵翻转
二维矩阵翻转 # N * N的二维矩阵 # 沿上下中线翻转 # 沿左右中线翻转 # 沿-45度对角线翻转 # 沿45度对角线翻转matrix3 = [[1, 2, 3, 4, 5], [6, 7, 8 ...
- 怎么读懂python语句_Python入门基础知识点总结,一点文章就能让你看懂Python
Python标识符 在 Python 里,标识符由字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中的标识符是区分大小写 ...
- python 二维列表切片_Python中mutable与immutable和二维列表的初始化问题
初始化一个shape为(3,3)的二维列表,正确的写法是这样的: 但是,如果写成这样: a = [[None] * 3] * 3print(a) # 输出 : [[None, None, None], ...
最新文章
- Vue2.0使用vue-cli脚手架搭建
- 2021年春季学期-信号与系统-第十四次作业参考答案-第八小题参考答案
- mysql忘记密码怎么改
- 程序员面试题精选100题(52)-C++面试题(1)
- Spring quartz 并发性研究
- 35-46集 中心极限定理、置信区间
- 高能同步辐射光源科学数据管理策略研究与应用
- Unable to execute dex: GC overhead limit exceeded
- 《UNIX网络编程卷1》第一例及问题
- 绝地求生进游戏显示服务器未正常运行,绝地求生BE服务器未正常运行怎么办 BE服务器未运行解决方法...
- python 线程同步_python线程同步
- 2.语音增强短时谱估计算法——幅度谱减法
- 睡眠革命——摘抄总结大纲
- c语言 怎么对百位数求余量,数据结构(C语言版)
- VS2019除出现许可证过期问题-无法下载许可证
- 递归、迭代和分治(2):递归的典型例子
- ESXi+黑群晖 由静态ip改回DHCP
- 知识贴:电子面单与传统面单的区别
- rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
- Windows10永久去掉预览窗格和详细信息窗格