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的解析的更多相关文章

  1. 使用C语言实现二维,三维绘图算法(2)-解析曲面的显示

    使用C语言实现二维,三维绘图算法(2)-解析曲面的显示 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...

  2. Python与线性代数——Numpy中的matrix()和array()的区别

    Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...

  3. Numpy系列(一)- array

    初始Numpy 一.什么是Numpy? 简单来说,Numpy 是 Python 的一个科学计算包,包含了多维数组以及多维数组的操作. Numpy 的核心是 ndarray 对象,这个对象封装了同质数据 ...

  4. numpy中的matrix与array的区别

    Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array ...

  5. numpy中 array数组的shape属性

    numpy.array 的shape属性理解 在码最邻近算法(K-Nearest Neighbor)的过程中,发现示例使用了numpy的array数组管理,其中关于array数组的shape(状态)属 ...

  6. python 中 numpy array 中的维度

    简介 numpy 创建的数组都有一个shape属性,它是一个元组,返回各个维度的维数.有时候我们可能需要知道某一维的特定维数. 二维情况 >>> import numpy as np ...

  7. 创建 numpy.array

    # 导包 import numpy as np numpy.array nparr = np.array([i for i in range(10)]) nparr # array([0, 1, 2, ...

  8. 【python】numpy array特殊数据统一处理

    array中的某些数据坏掉,想要统一处理,找到了这个方法,做个笔记. 比如,把数组中所有小于0的数字置为0 import numpy as np t = np.array([-2, -1, 0, 1, ...

  9. numpy的array合并-【老鱼学numpy】

    概述 本节主要讲述如何把两个数组按照行或列进行合并. 按行进行上下合并 例如: import numpy as np a = np.array([1, 1, 1]) b = np.array([2, ...

随机推荐

  1. 系统环境变量(就是不需要切换目录,敲击“python”就可以进入编码器)

    1.右击我的电脑,选择属性,选择“高级系统设置” 2.选择高级,选择环境变量 3.在系统变量中找到path,点击编辑.然后新建,将python的路径复制进去,点击确定.

  2. Zepto的使用以及注意事项

       为什么选择Zepto.js的原因: zepto.js的语法借鉴并且兼容jQuery,会使用jquery就会使用Zepto.js.Zepto.js是移动端的js库.Zepto.js相当于PC端的j ...

  3. P1030 求先序排列 P1305 新二叉树

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度\le 8≤8). 输入输出格式 输入格式: 22行,均为大写字母组成的字符串,表示一棵二叉树的中序与 ...

  4. P1101 单词方阵 简单dfs

    题目描述 给一n \times nn×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向,单词与单 ...

  5. python面试题之Python是如何进行内存管理的

    python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收. ...

  6. Python Enum 枚举 用法汇总

    Python Enum 枚举 用法汇总 import os import sys if sys.version_info.major + sys.version_info.minor * 0.1 &l ...

  7. Java常用API——String字符串运算

    一.字符串运算 String类 1.概述 String是特殊的引用数据类型,它是final类. 2.构造方法 String str = "abc"; 相当于:  char date ...

  8. hdu1598 find the most comfortable road (枚举)+【并查集】

    <题目链接> 题目大意: XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在 ...

  9. jsonp突破浏览器同源策略

    jsonp突破浏览器同源策略 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  10. .net3.5 支持tuple

    添加下面引用即可: https://github.com/SaladLab/NetLegacySupport