这是解决此类问题的一般策略.

首先,编写一个小脚本,将循环显式写入两个不同的函数,最后进行测试,确保两个函数完全相同:

import numpy as np

from numpy import newaxis

def explicit(a):

n = a.shape[0]

m = np.zeros_like(a)

for k in range(n):

for i in range(n):

for j in range(n):

m[k,i] += a[i,j] - a[i,k] - a[k,j] + a[k,k]

return m

def implicit(a):

n = a.shape[0]

m = np.zeros_like(a)

for k in range(n):

for i in range(n):

for j in range(n):

m[k,i] += a[i,j] - a[i,k] - a[k,j] + a[k,k]

return m

a = np.random.randn(10,10)

assert np.allclose(explicit(a), implicit(a), atol=1e-10, rtol=0.)

然后,通过编辑隐式来逐步向量化函数,在每一步运行脚本以确保它们继续保持不变:

步骤1

def implicit(a):

n = a.shape[0]

m = np.zeros_like(a)

for k in range(n):

for i in range(n):

m[k,i] = (a[i,:] - a[k,:]).sum() - n*a[i,k] + n*a[k,k]

return m

第2步

def implicit(a):

n = a.shape[0]

m = np.zeros_like(a)

m = - n*a.T + n*np.diag(a)[:,newaxis]

for k in range(n):

for i in range(n):

m[k,i] += (a[i,:] - a[k,:]).sum()

return m

第3步

def implicit(a):

n = a.shape[0]

m = np.zeros_like(a)

m = - n*a.T + n*np.diag(a)[:,newaxis]

m += (a.T[newaxis,...] - a[...,newaxis]).sum(1)

return m

瞧瞧’!最后一个没有循环.为了矢量化这种方程,broadcasting就是要走的路!

警告:确保显式是您想要向量化的等式.我不确定是否也应该总结不依赖于j的术语.

python未知数的矩阵运算_python – Numpy矩阵运算相关推荐

  1. python矩阵后加点_Python Numpy和矩阵的相关面试问题

    通常,数据科学家被要求在Python中执行简单的矩阵运算,这应该很简单,但许多人会偏离正轨. 本文将介绍面试中经常出现的4个Numpy/matrix问题,并用Python编写代码. 问题1: 给定4x ...

  2. python中grid函数_Python / NumPy中meshgrid的目的是什么?

    实际上文档中已经提到了np.mgrid的目的: np.mgrid 从坐标向量返回坐标矩阵. 在给定一维坐标数组x1,x2,...,xn的情况下,为N-D网格上的N-D标量/矢量场的矢量化评估制作N-D ...

  3. python中argmin函数_Python numpy.argmin()用法及代码示例

    numpy.argmin(array,axis = None,out = None):返回特定轴上数组min元素的索引. 参数: array:Input array to work on axis : ...

  4. python步长什么意思_python – Numpy:在每个时间步长平均许多数据点

    这个问题可能在某个地方得到解答,但我找不到哪里,所以我会在这里问: 我有一组数据,每个时间步长有几个样本.所以,我基本上有两个数组,"时间",看起来像:(0,0,0,1,1,1,1 ...

  5. python产生一个等比数列_python numpy生成等差数列、等比数列的实例

    如下所示: import numpy as np # 等差数列 print(np.linspace(0.1, 1, 10, endpoint=True)) print(np.arange(0.1, 1 ...

  6. python中squeeze函数_Python numpy.squeeze()用法及代码示例

    当我们要从数组形状中删除一维条目时,将使用numpy.squeeze()函数. 用法: numpy.squeeze(arr, axis=None ) 参数: arr :[数组]输入数组. axis : ...

  7. python中isin函数_Python numpy.isin函数方法的使用

    numpy.isin numpy.isin(element, test_elements, assume_unique=False, invert=False)     [source] 计算test ...

  8. python内核多线程库_python / numpy中的多线程blas

    我已经将其发布在另一个线程中,但我认为它更适合于此: 更新(30.07.2014): 我在新的HPC上重新运行基准测试.硬件和软件堆栈都与原始答案中的设置有所不同. 我将结果放在Google电子表格中 ...

  9. python 中arange函数_Python numpy.arange函数方法的使用

    numpy.arange numpy.arange([start, ]stop, [step, ]dtype=None) 返回给定间隔内的均匀间隔的值. 在半开间隔[start,stop)(换句话说, ...

最新文章

  1. 继续转 [转]php版本的cron定时任务执行器
  2. Qt Creator设置Meson
  3. 计算机网络物理层知识要点:通信基础、传输介质和设备
  4. P3160:局部极小值(容斥、状压)
  5. linux内核打印前有buildroot,buildroot-linux内核
  6. Qt QSS知识点记录
  7. vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
  8. 公司有内部推荐的名额
  9. java基础学习(6)疯狂java讲义第5章课后习题解答源码
  10. 网页回到顶部的js代码实现
  11. plt图像保存到pdf文件
  12. 线程启动、结束,创建线程多法、join,detach
  13. 工业企业外购材料进项税额的会计处理
  14. no suitable HttpMessageConverter found for response type 异常
  15. matlab中ode指令,matlab中ode5函数编写.doc
  16. 【C语言】C语言函数
  17. 命中率 计算机组成原理,计算机组成原理-求命中率.pptx
  18. 营地第一天之今天我是伙委
  19. sql%rowcount
  20. 计算机毕业设计Java中医药院校科研会议系统(源码+系统+mysql数据库+Lw文档)

热门文章

  1. 中国致密气行业市场现状调研与投资前景预测分析报告2022年版
  2. 脉冲神经网络2:SNN的仿真2—感受野
  3. C++开发系统学习总结及心得体会
  4. Deep Learning for Anomaly Detection: A Review(翻译)
  5. CS285课程笔记(5.(1))——从概率图角度理解强化学习(变分推断原理+VAE)
  6. 【Davinci开发】:MCAL模块导入(之:ICU模块)
  7. 部门名称部门结构叠用_公司各部门名称
  8. 今日新鲜事.片尾视频素材库专属头像剪映基础教程
  9. linux如何进u盘 命令,ubuntu 通过命令将数据复制到u盘
  10. jQuery08源码 (5140 , 6057) DOM操作 : 添加 删除 获取 包装 DOM筛选