使用stride_tricks有一个可能的解决方案。这在一定程度上是基于this question的答案中提供的大量信息,但我认为,问题只是不同而已,不算重复。这是一个基本思想,应用到一个方阵中,见下面的函数实现更一般的解决方案。在>>> cols = 8

>>> a = numpy.arange(cols * cols).reshape((cols, cols))

>>> fill = numpy.zeros((cols - 1) * cols, dtype='i8').reshape((cols - 1, cols))

>>> stacked = numpy.vstack((a, fill, a))

>>> major_stride, minor_stride = stacked.strides

>>> strides = major_stride, minor_stride * (cols + 1)

>>> shape = (cols * 2 - 1, cols)

>>> numpy.lib.stride_tricks.as_strided(stacked, shape, strides)

array([[ 0, 9, 18, 27, 36, 45, 54, 63],

[ 8, 17, 26, 35, 44, 53, 62, 0],

[16, 25, 34, 43, 52, 61, 0, 0],

[24, 33, 42, 51, 60, 0, 0, 0],

[32, 41, 50, 59, 0, 0, 0, 0],

[40, 49, 58, 0, 0, 0, 0, 0],

[48, 57, 0, 0, 0, 0, 0, 0],

[56, 0, 0, 0, 0, 0, 0, 0],

[ 0, 0, 0, 0, 0, 0, 0, 7],

[ 0, 0, 0, 0, 0, 0, 6, 15],

[ 0, 0, 0, 0, 0, 5, 14, 23],

[ 0, 0, 0, 0, 4, 13, 22, 31],

[ 0, 0, 0, 3, 12, 21, 30, 39],

[ 0, 0, 2, 11, 20, 29, 38, 47],

[ 0, 1, 10, 19, 28, 37, 46, 55]])

>>> diags = numpy.lib.stride_tricks.as_strided(stacked, shape, strides)

>>> diags.sum(axis=1)

array([252, 245, 231, 210, 182, 147, 105, 56, 7, 21, 42, 70, 105,

147, 196])

当然,我不知道这会有多快。但我敢打赌它会比Python列表理解更快。在

为了方便起见,这里有一个完全通用的diagonals函数。它假定要沿最长轴移动对角线:

^{pr2}$

python矩阵对角线求和numpy_以numpy计算对角线和(更快)相关推荐

  1. python io密集 多线程_python多进程和多线程究竟谁更快(详解)

    python3.6 threading和multiprocessing 四核+三星250G-850-SSD 自从用多进程和多线程进行编程,一致没搞懂到底谁更快.网上很多都说python多进程更快,因为 ...

  2. python 3.9 性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型

    原标题:Python 3.9 性能优化:更快的 list().dict() 和 range() 等内置类型 Python 的 3.9.0 版本正在开发中,计划在 2020-10-05发布final版本 ...

  3. python 矩阵乘法 跳过nan_python – Numpy:当一些向量元素等于零时,矩阵向量乘法不会跳过计算吗?...

    我最近一直致力于一个项目,其中我的大部分时间花费在密集矩阵A和稀疏向量v上(见 here).在我尝试减少计算时,我注意到A.dot(v)的运行时间不受v的零条目数的影响. 为了解释为什么我希望在这种情 ...

  4. python pandas 条件求和_python 使用pandas计算累积求和的方法

    python 使用pandas计算累积求和的方法 使用pandas下的cumsum函数 cumsum:计算轴向元素累积加和,返回由中间结果组成的数组.重点就是返回值是"由中间结果组成的数组& ...

  5. Python矩阵的用法(使用numpy)

    转自:https://www.cnblogs.com/chamie/p/4870078.html 矩阵的维数 向量的维数是指向量分量的个数,比如 (1,2,3,4)' 是一个4维向量 矩阵的维数是指它 ...

  6. python矩阵变成图片_Python将numpy矩阵保存为PNG图片

    我通过PIL和numpy处理的图片现在是一个numpy array,我希望它存回png格式,于是查到了scipy.misc.toimage可以做到,但是这里面有一些需要注意的地方. 直接上我的code ...

  7. python方差的计算公式_用numpy计算均值,方差,标准差

    numpy自带一些函数接口,可以用来很方便的计算一组数据的均值(mean),方差(variance)和标准差(standard deviation). 均值(mean) >>> a ...

  8. python求移动平均_如何用NumPy计算移动平均值?

    NumPy缺少特定于域的函数可能是由于核心团队的纪律性和对NumPy主指令的忠实性:提供了N维数组类型,以及创建和索引这些数组的函数.像许多基本目标一样,这个目标并不小,纽比做得很出色. 更大的Sci ...

  9. python 矩阵元素赋值_对numpy中数组元素的统一赋值实例

    Numpy中的数组整体处理赋值操作一直让我有点迷糊,很多时候理解的不深入.今天单独列写相关的知识点,进行总结一下. 先看两个代码片小例子: 例子1: In [2]: arr =np.empty((8, ...

最新文章

  1. Nginx 出現 500 Error 修復 (too many open file, connection)
  2. 接口继承中一个常见问题的思考
  3. 国外的老师是怎么教Golang的?
  4. linux中dns超时时间,Linux DNS timeout, attempts.---DNS超时,重试的配置
  5. 【无标题】VUE 强行加载demo元素
  6. Jmeter中的几种协议
  7. DWG/DGN格式导入Arcgis;转化为shp格式;更改地理坐标;导入Google Earth
  8. Idea在debug时打上断点没有用 Skipped breakpoint at ... because it happened inside debugger evaluation
  9. 不依赖第三方环境和服务
  10. 运算符之前加加后加加的运算规则
  11. 2019.11.21工作记录——windriver生成PCI驱动32位向64位移植
  12. 记录自己装AMD黑苹果安装
  13. 谷歌VR展示360度全景图
  14. JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)
  15. 高通骁龙芯片的随身wifi入门刷机教程
  16. html做图片模糊效果,CSS3 filter(滤镜) 制作图片高斯模糊无需JS
  17. HTML和CSS隐藏元素的四种方法
  18. 产品流程规划的8个阶段
  19. 面向对象—多态、鸭子类型(Day21)
  20. 【玩转python】python实现代替QQ邮箱发出邮件(附源码,新手也能用!)

热门文章

  1. William Nelson Joy
  2. HEAP: HEAP: Free Heap block xx modified at xxafter it was freed 堆内存出现野指针错误
  3. 那些40岁的程序员都去哪了
  4. 联想电脑linux安装教程视频,linux安装教程
  5. C++ 读入整行带空格的字符串,并将字符串按照特定符号划分成多个子串
  6. php jrfdfpl cn,cos-php-sdk-v5接口文档
  7. apidemos -views/lists/Activate items 学习
  8. Matlab 预防性维修,基于故障预测的预防性维修策略优化模型.pdf
  9. 6713亿!华为正式官宣
  10. 禅道的测试模块(bug模块)