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多维矩阵基础运算中的一点困惑相关推荐

  1. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  2. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能import s ...

  3. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  4. 理解多维矩阵乘积运算和对应的广播机制

    神经网络中的多维矩阵乘积运算: 多维矩阵乘积运算乘积两项的维度都应该是相同的,如果有论文中有遇到矩阵乘积的两项维度不一致,那就考虑它计算时是使用了广播机制(如YOLACT).所有大于二维的,最终都是以 ...

  5. python矩阵运算_Python矩阵常见运算操作实例总结

    本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...

  6. 以下关于python二维数据的描述中错误的是_python第二章1

    1. (单选题) Python 3.x 版本的保留字总数是( ) A.27B.29C.33D.62. (单选题) 以下选项中,不是 Python 语言保留字的是( ) A.whileB.passC.d ...

  7. python 二维矩阵翻转

    二维矩阵翻转 # N * N的二维矩阵 # 沿上下中线翻转 # 沿左右中线翻转 # 沿-45度对角线翻转 # 沿45度对角线翻转matrix3 = [[1, 2, 3, 4, 5], [6, 7, 8 ...

  8. 怎么读懂python语句_Python入门基础知识点总结,一点文章就能让你看懂Python

    Python标识符 在 Python 里,标识符由字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中的标识符是区分大小写 ...

  9. python 二维列表切片_Python中mutable与immutable和二维列表的初始化问题

    初始化一个shape为(3,3)的二维列表,正确的写法是这样的: 但是,如果写成这样: a = [[None] * 3] * 3print(a) # 输出 : [[None, None, None], ...

最新文章

  1. Vue2.0使用vue-cli脚手架搭建
  2. 2021年春季学期-信号与系统-第十四次作业参考答案-第八小题参考答案
  3. mysql忘记密码怎么改
  4. 程序员面试题精选100题(52)-C++面试题(1)
  5. Spring quartz 并发性研究
  6. 35-46集 中心极限定理、置信区间
  7. 高能同步辐射光源科学数据管理策略研究与应用
  8. Unable to execute dex: GC overhead limit exceeded
  9. 《UNIX网络编程卷1》第一例及问题
  10. 绝地求生进游戏显示服务器未正常运行,绝地求生BE服务器未正常运行怎么办 BE服务器未运行解决方法...
  11. python 线程同步_python线程同步
  12. 2.语音增强短时谱估计算法——幅度谱减法
  13. 睡眠革命——摘抄总结大纲
  14. c语言 怎么对百位数求余量,数据结构(C语言版)
  15. VS2019除出现许可证过期问题-无法下载许可证
  16. 递归、迭代和分治(2):递归的典型例子
  17. ESXi+黑群晖 由静态ip改回DHCP
  18. 知识贴:电子面单与传统面单的区别
  19. rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
  20. Windows10永久去掉预览窗格和详细信息窗格

热门文章

  1. 央视被黑内幕,居然存在暴库及上传漏洞
  2. 找2个数组中相同的数
  3. sql语句 isnull(列名,'')='' /STUFF的意思
  4. (转载)7个去伪存真的JavaScript面试题
  5. 微软Code Hunt答案(00-05)——沉迷娱乐的我
  6. 关于内核态和用户态切换开销的测试
  7. url即统一资源定位符
  8. .NET Windows编程系列笔记(一)
  9. 《幸福就在你身边》第一课、你有追求美好生活的权利【哈佛大学幸福课精华】...
  10. 【Python】python学习笔记day1