unutbu..

5

你可以使用einsum:

In [21]: np.einsum('ijkl->kl', M)

Out[21]:

array([[32, 8],

[16, 8]])

其他选项包括将前两个轴重新整形为一个轴,然后调用sum:

In [24]: M.reshape(-1, 2, 2).sum(axis=0)

Out[24]:

array([[32, 8],

[16, 8]])

或者调用sum方法两次:

In [26]: M.sum(axis=0).sum(axis=0)

Out[26]:

array([[32, 8],

[16, 8]])

但使用np.einsum速度更快:

In [22]: %timeit np.einsum('ijkl->kl', M)

100000 loops, best of 3: 2.42 µs per loop

In [25]: %timeit M.reshape(-1, 2, 2).sum(axis=0)

100000 loops, best of 3: 5.69 µs per loop

In [43]: %timeit np.sum(M, axis=(0,1))

100000 loops, best of 3: 6.08 µs per loop

In [33]: %timeit sum(sum(M))

100000 loops, best of 3: 8.18 µs per loop

In [27]: %timeit M.sum(axis=0).sum(axis=0)

100000 loops, best of 3: 9.83 µs per loop

警告:由于许多因素(OS,NumPy版本,NumPy库,硬件等),timeit基准测试可能会有很大差异.各种方法的相对性能有时也取决于M的大小.因此,在M更接近实际用例的情况下,自己做基准测试是值得的.

例如,对于稍大的数组M,调用该sum方法两次可能是最快的:

In [34]: M = np.random.random((100,100,2,2))

In [37]: %timeit M.sum(axis=0).sum(axis=0)

10000 loops, best of 3: 59.9 µs per loop

In [39]: %timeit np.einsum('ijkl->kl', M)

10000 loops, best of 3: 99 µs per loop

In [40]: %timeit np.sum(M, axis=(0,1))

10000 loops, best of 3: 182 µs per loop

In [36]: %timeit M.reshape(-1, 2, 2).sum(axis=0)

10000 loops, best of 3: 184 µs per loop

In [38]: %timeit sum(sum(M))

1000 loops, best of 3: 202 µs per loop

python sum 数组原理_Python - Sum 4D数组相关推荐

  1. python sum 数组原理_Python – Sum 4D数组

    你可以使用 einsum: In [21]: np.einsum('ijkl->kl', M) Out[21]: array([[32, 8], [16, 8]]) 其他选项包括将前两个轴重新整 ...

  2. python类的数组属性_Python学习之数组类型一:

    Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建: 向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...

  3. python numpy数组切片_python中numpy数组切片实验解释

    print(a[0::2]).a[::2].[:,2].[1:,-1:].a[::-1].[ : n].[m : ].[-1].[:-1].[1:]等的含义 文章目录 一维数组(冒号:) 1.一个参数 ...

  4. python 多维数组去重_python多维数组运算-女性时尚流行美容健康娱乐mv-ida网

    自动秒收录 如何加入 (当前页) 购买本站源码 自媒体交流 查询是否收录 查询收录 × 快速加入 只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位. 本站已收录286 ...

  5. python二维数组表示_python中二维数组中的数如何表达

    python二维数组如何挑选出一定范围的数值? 比如说有一个二维数组 13.1 13.2 13.3 13.4 15.5 15.0 45.2 22.3 22.3 3 [j for i in a for ...

  6. python 数组打包_Python:打包多字节数组

    这是前一个问题的延续.我收到了更多的信件,但我有点困惑,不知道该怎么做.在 我的目的是获取几个不同长度的字节数组,并通过UDP将它们发送到另一台机器上的进程.UDP我可以做,但是发送字节数组给我带来了 ...

  7. python程序的原理_Python程序的执行原理(转)

    1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行. 2. 字节码 字节码在Python虚拟机程序里对应的是PyCo ...

  8. 简述python程序执行原理_Python程序的执行原理(1)

    test.py的指令序列 func函数的指令序列 第一列表示以下几个指令在py文件中的行号; 第二列是该指令在指令序列co_code里的偏移量; 第三列是指令opcode的名称,分为有操作数和无操作数 ...

  9. python解析器原理_Python程序运行原理图文解析

    本文研究的主要是Python程序运行原理,具体介绍如下. 编译型语言(C语言为例) 动态型语言 一个程序是如何运行起来的?比如下面的代码 #othermodule.py def add(a, b): ...

最新文章

  1. usr share里没有mysql_无法在ubuntu 12.04上安装mysql,找不到消息文件’/usr/share/mysql/errmsg.sys’...
  2. Spring使用环境变量控制配置文件加载(转)
  3. java:接口和抽象
  4. 自从用了这几个网站后,linux下的开发(使用)更加简单化
  5. Physically Based Specular for Artists
  6. IIS32位,64位模式下切换
  7. 五款可以取代 Slack 的开源工具
  8. mac新手入门:从启动台Launchpad中完全删除应用程序
  9. PyQt5多线程刷新界面防假死
  10. LINUX更改图标后生效
  11. 搞明白“清算-结算”的二级制
  12. NFine框架因新增页面而显示无法链接资源
  13. Alter table alter |change |modify 区别
  14. 一篇文章教你从入门到精通 Google 指纹验证功能
  15. xRM 扩展性及产品组合
  16. 计算机存储程序错误检验,内存错误怎么办?内存错误的修复与检测方法介绍
  17. DBCO高分子PEG_DBCO-PEG-Lipoic COOH_二苯并环辛炔-聚乙二醇-硫辛酸
  18. MAML:User Diverse Preference Modeling by Multimodal AttentiveMetric Learning
  19. 中国-8月两轮车市场加速增长(+7%)
  20. 大学物理实验计算机仿真 光电效应,光电效应仿真实验的教学探究

热门文章

  1. jQuery调用WCF需要注意的一些问题
  2. Innodb隔离级别的实现原理
  3. PHP执行一个http请求
  4. win10无法检测java_Javac 在windows10系统不识别
  5. stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...
  6. android xe 调用 java,Delphi XE6 for Android 让手机震动(调用Java的函数)
  7. signature=a7ab3f52fd3143e911ffec68c5ce32d7,2019年强网杯crypto部分题解
  8. mysql rpm conflict_解决centos7 yum安装MySQL rpm包出现conflict problem
  9. Centos 利用yum源安装 nginx stream模块
  10. 【spring boot】 禁用/关闭数据源/DataSource