numpy.trace对于三维以上array的解析
numpy.trace是求shape的对角线上的元素的和,具体看 https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.trace.html
或者搜索 numpy.trace, 二维的比较好理解,对于三维以上的对角线(三维的对角线不止2条,该选哪两条呢)就不好理解了,以下是本人的理解
# 3-D array 的trace算法 import numpy as np a = np.arange(8).reshape((2,2,2))
print 'a =',a print np.trace(a) x0 = a[0,0,0] + a[1,1,0]#即 0 + 6
print 'a[1,1,0] =', a[1,1,0],';','x0 =',x0
x1 = a[0,0,1] + a[1,1,1]#即 1 + 7
print 'a[1,1,1] =', a[1,1,1],';','x1 =',x1 #当然你可能认为6 = 2 + 4;或者 8 = 5 + 3,确实一个立方体应该是4条对角线,但是是不是都可以呢
#请看下面的3-D
b = np.array([ [ [100, 198],
[2, 3]],
[ [4, 5],
[6,7]]])
print 'b =',b
print np.trace(b)
y0 = b[0,0,0] + b[1,1,0]#即 0 + 6
print 'y0 = b[0,0,0] + b[1,1,0] = %d + %d = %d' % (b[0,0,0], b[1,1,0], y0)
y1 = b[0,0,1] + b[1,1,1]#即 1 + 7
print 'y1 = b[0,0,1] + b[1,1,1] = %d + %d = %d' % (b[0,0,1], b[1,1,1], y1) #事实证明只能是其中的固定方向的
#之所以能以此种方式思考是因为2-D的直观 c = np.array([[2, 8],
[4,5]])
print 'c =', c
print 'trace =', np.trace(c)
trace_c = c[0,0] + c[1,1]
print 'c[0,0] + c[1,1] = %d + %d = %d' % (c[0,0], c[1,1], trace_c) #来看看4-D的
d = np.arange(32).reshape((2,2,2,4))
print 'd =', d
#猜猜看这个trace结果是什么shape,
#(2, 4),只要去掉前面 2个维度即可
print 'np.trace(d).shape =', np.trace(d).shape
print 'np.trace(d) =', np.trace(d)
td00 = d[0,0,0,0] + d[1,1,0,0]
print 'td00 = ' + 'd[0,0,0,0] + d[1,1,0,0] = %d + %d = %d' % (d[0,0,0,0], d[1,1,0,0], td00)
td01 = d[0,0,0,1] + d[1,1,0,1]
print 'td01 = ' + 'd[0,0,0,1] + d[1,1,0,1] = %d + %d = %d' % (d[0,0,0,1], d[1,1,0,1], td01)
td02 = d[0,0,0,2] + d[1,1,0,2]
print 'td02 = ' + 'd[0,0,0,2] + d[1,1,0,2] = %d + %d = %d' % (d[0,0,0,2], d[1,1,0,2], td02)
td03 = d[0,0,0,3] + d[1,1,0,3]
print 'td03 = ' + 'd[0,0,0,3] + d[1,1,0,3] = %d + %d = %d' % (d[0,0,0,3], d[1,1,0,3], td03) print
td10 = d[0,0,1,0] + d[1,1,1,0]
print 'td10 = ' + 'd[0,0,1,0] + d[1,1,1,0] = %d + %d = %d' % (d[0,0,1,0], d[1,1,1,0], td10)
td11 = d[0,0,1,1] + d[1,1,1,1]
print 'td11 = ' + 'd[0,0,1,1] + d[1,1,1,1] = %d + %d = %d' % (d[0,0,1,1], d[1,1,1,1], td11)
td12 = d[0,0,1,2] + d[1,1,1,2]
print 'td12 = ' + 'd[0,0,1,2] + d[1,1,1,2] = %d + %d = %d' % (d[0,0,1,2], d[1,1,1,2], td12)
td13 = d[0,0,1,3] + d[1,1,1,3]
print 'td13 = ' + 'd[0,0,1,3] + d[1,1,1,3] = %d + %d = %d' % (d[0,0,1,3], d[1,1,1,3], td13)
以下是运行结果:(python 2.7, numpy:1.14.2:
a = [[[0 1]
[2 3]] [[4 5]
[6 7]]]
[6 8]
a[1,1,0] = 6 ; x0 = 6
a[1,1,1] = 7 ; x1 = 8
b = [[[100 198]
[ 2 3]] [[ 4 5]
[ 6 7]]]
[106 205]
y0 = b[0,0,0] + b[1,1,0] = 100 + 6 = 106
y1 = b[0,0,1] + b[1,1,1] = 198 + 7 = 205
c = [[2 8]
[4 5]]
trace = 7
c[0,0] + c[1,1] = 2 + 5 = 7
d = [[[[ 0 1 2 3]
[ 4 5 6 7]] [[ 8 9 10 11]
[12 13 14 15]]] [[[16 17 18 19]
[20 21 22 23]] [[24 25 26 27]
[28 29 30 31]]]]
np.trace(d).shape = (2, 4)
np.trace(d) = [[24 26 28 30]
[32 34 36 38]]
td00 = d[0,0,0,0] + d[1,1,0,0] = 0 + 24 = 24
td01 = d[0,0,0,1] + d[1,1,0,1] = 1 + 25 = 26
td02 = d[0,0,0,2] + d[1,1,0,2] = 2 + 26 = 28
td03 = d[0,0,0,3] + d[1,1,0,3] = 3 + 27 = 30 td10 = d[0,0,1,0] + d[1,1,1,0] = 4 + 28 = 32
td11 = d[0,0,1,1] + d[1,1,1,1] = 5 + 29 = 34
td12 = d[0,0,1,2] + d[1,1,1,2] = 6 + 30 = 36
td13 = d[0,0,1,3] + d[1,1,1,3] = 7 + 31 = 38
numpy.trace对于三维以上array的解析的更多相关文章
- 使用C语言实现二维,三维绘图算法(2)-解析曲面的显示
使用C语言实现二维,三维绘图算法(2)-解析曲面的显示 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...
- Python与线性代数——Numpy中的matrix()和array()的区别
Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...
- Numpy系列(一)- array
初始Numpy 一.什么是Numpy? 简单来说,Numpy 是 Python 的一个科学计算包,包含了多维数组以及多维数组的操作. Numpy 的核心是 ndarray 对象,这个对象封装了同质数据 ...
- numpy中的matrix与array的区别
Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array ...
- numpy中 array数组的shape属性
numpy.array 的shape属性理解 在码最邻近算法(K-Nearest Neighbor)的过程中,发现示例使用了numpy的array数组管理,其中关于array数组的shape(状态)属 ...
- python 中 numpy array 中的维度
简介 numpy 创建的数组都有一个shape属性,它是一个元组,返回各个维度的维数.有时候我们可能需要知道某一维的特定维数. 二维情况 >>> import numpy as np ...
- 创建 numpy.array
# 导包 import numpy as np numpy.array nparr = np.array([i for i in range(10)]) nparr # array([0, 1, 2, ...
- 【python】numpy array特殊数据统一处理
array中的某些数据坏掉,想要统一处理,找到了这个方法,做个笔记. 比如,把数组中所有小于0的数字置为0 import numpy as np t = np.array([-2, -1, 0, 1, ...
- numpy的array合并-【老鱼学numpy】
概述 本节主要讲述如何把两个数组按照行或列进行合并. 按行进行上下合并 例如: import numpy as np a = np.array([1, 1, 1]) b = np.array([2, ...
随机推荐
- bootstrap AdminLTE模版的使用
参考: https://adminlte.io/themes/AdminLTE/documentation/index.html https://blog.csdn.net/gebitan505/ ...
- Vue全局API总结
1.extend用于创建一个子类Vue,用$mount来挂载 <body> <div id="app"></div> <script> ...
- LoadRunner脚本参数化之自动关联和手动关联
一.关联的意义 1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的 ...
- 安卓编程资源文件string中对占位符的使用详解
这里将为你详细介绍占位符的使用,将其学以致用,可以达到简化布局文件,减少字符串资源量. 1.在资源文件中的使用. 打开资源文件中的strings.xml文件,进行编辑.如下图所示: 图 1.0 2. ...
- react-antd 按需加载报错
基于create-react-app 搭建的 react 项目 引入 antd UI 配置按需加载 但是报一下错误 .翻译过了一下 是内嵌JavaScript选项没有开启什么的 大白话就是 les ...
- HDU 5536 Chip Factory (暴力+01字典树)
<题目链接> 题目大意: 给定一个数字序列,让你从中找出三个不同的数,从而求出:$\max_{i,j,k} (s_i+s_j) \oplus s_k$的值. 解题分析:先建好01字典树,然 ...
- hdu 2181 哈密顿绕行世界问题【DFS】
题目链接 题目大意: Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input ...
- Looping through the content of a file in Bash
https://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash One way to ...
- SQL varbinary varchar 互转
--============================================== -- FUNCTION varbin2hexstr -- 将 varbinary 类型的数据转换为 v ...
- Git 基本命令行操作
一.本地仓库操作 1.初始化 git init 2.添加版本控制文件 git add README.md3.本地提交 git commit -m “1st commit”4.配置远程 ...