python矩阵对角线求和numpy_以numpy计算对角线和(更快)
使用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计算对角线和(更快)相关推荐
- python io密集 多线程_python多进程和多线程究竟谁更快(详解)
python3.6 threading和multiprocessing 四核+三星250G-850-SSD 自从用多进程和多线程进行编程,一致没搞懂到底谁更快.网上很多都说python多进程更快,因为 ...
- python 3.9 性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
原标题:Python 3.9 性能优化:更快的 list().dict() 和 range() 等内置类型 Python 的 3.9.0 版本正在开发中,计划在 2020-10-05发布final版本 ...
- python 矩阵乘法 跳过nan_python – Numpy:当一些向量元素等于零时,矩阵向量乘法不会跳过计算吗?...
我最近一直致力于一个项目,其中我的大部分时间花费在密集矩阵A和稀疏向量v上(见 here).在我尝试减少计算时,我注意到A.dot(v)的运行时间不受v的零条目数的影响. 为了解释为什么我希望在这种情 ...
- python pandas 条件求和_python 使用pandas计算累积求和的方法
python 使用pandas计算累积求和的方法 使用pandas下的cumsum函数 cumsum:计算轴向元素累积加和,返回由中间结果组成的数组.重点就是返回值是"由中间结果组成的数组& ...
- Python矩阵的用法(使用numpy)
转自:https://www.cnblogs.com/chamie/p/4870078.html 矩阵的维数 向量的维数是指向量分量的个数,比如 (1,2,3,4)' 是一个4维向量 矩阵的维数是指它 ...
- python矩阵变成图片_Python将numpy矩阵保存为PNG图片
我通过PIL和numpy处理的图片现在是一个numpy array,我希望它存回png格式,于是查到了scipy.misc.toimage可以做到,但是这里面有一些需要注意的地方. 直接上我的code ...
- python方差的计算公式_用numpy计算均值,方差,标准差
numpy自带一些函数接口,可以用来很方便的计算一组数据的均值(mean),方差(variance)和标准差(standard deviation). 均值(mean) >>> a ...
- python求移动平均_如何用NumPy计算移动平均值?
NumPy缺少特定于域的函数可能是由于核心团队的纪律性和对NumPy主指令的忠实性:提供了N维数组类型,以及创建和索引这些数组的函数.像许多基本目标一样,这个目标并不小,纽比做得很出色. 更大的Sci ...
- python 矩阵元素赋值_对numpy中数组元素的统一赋值实例
Numpy中的数组整体处理赋值操作一直让我有点迷糊,很多时候理解的不深入.今天单独列写相关的知识点,进行总结一下. 先看两个代码片小例子: 例子1: In [2]: arr =np.empty((8, ...
最新文章
- Nginx 出現 500 Error 修復 (too many open file, connection)
- 接口继承中一个常见问题的思考
- 国外的老师是怎么教Golang的?
- linux中dns超时时间,Linux DNS timeout, attempts.---DNS超时,重试的配置
- 【无标题】VUE 强行加载demo元素
- Jmeter中的几种协议
- DWG/DGN格式导入Arcgis;转化为shp格式;更改地理坐标;导入Google Earth
- Idea在debug时打上断点没有用 Skipped breakpoint at ... because it happened inside debugger evaluation
- 不依赖第三方环境和服务
- 运算符之前加加后加加的运算规则
- 2019.11.21工作记录——windriver生成PCI驱动32位向64位移植
- 记录自己装AMD黑苹果安装
- 谷歌VR展示360度全景图
- JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)
- 高通骁龙芯片的随身wifi入门刷机教程
- html做图片模糊效果,CSS3 filter(滤镜) 制作图片高斯模糊无需JS
- HTML和CSS隐藏元素的四种方法
- 产品流程规划的8个阶段
- 面向对象—多态、鸭子类型(Day21)
- 【玩转python】python实现代替QQ邮箱发出邮件(附源码,新手也能用!)
热门文章
- William Nelson Joy
- HEAP: HEAP: Free Heap block xx modified at xxafter it was freed 堆内存出现野指针错误
- 那些40岁的程序员都去哪了
- 联想电脑linux安装教程视频,linux安装教程
- C++ 读入整行带空格的字符串,并将字符串按照特定符号划分成多个子串
- php jrfdfpl cn,cos-php-sdk-v5接口文档
- apidemos -views/lists/Activate items 学习
- Matlab 预防性维修,基于故障预测的预防性维修策略优化模型.pdf
- 6713亿!华为正式官宣
- 禅道的测试模块(bug模块)