python - 应用时移
问题描述
考虑数组r,维度为 [N,m],其中N是时间索引,m是网络中的元素数。考虑这m个元素中的每一个都相互连接,但是元素j中元素i的影响需要一些时间才能发生,即每个连接之间存在延迟矩阵delayMat给出的延迟,维度为 [m,m ]。
就是说,我有以下问题:我想创建一个矩阵 [m,m] ,其中包含数组r的值,但在delayMat之后应用了适当的时间筛选(延迟)。一种方法是:
delay = n - delayMat
drate = np.zeros([m,m])
for i in range(m):
for j in range(m):
drate[j,i]=r[delay[j,i],i]
其中,n是实际时间索引,使用每个连接的延迟值r对矩阵进行划分。这行得通,但是,它非常慢,具体取决于m。有没有办法以更优化的方式在 numpy 上执行此操作?
示例代码(实际代码需要读取大量数据,此处贴出不切实际):
import numpy as np
delayMat = np.random.randint(1,195,[30,30])
rate = np.random.normal(0,1,size=(4,1000,30))
n = 1000 # current time index
delay = n-delayMat
drate1 = np.zeros([30,30]) # delayed variable
drate3 = np.zeros([30,30])
for pre in range(30):
for pos in range(30):
drate1[pos,pre]=rate[0,delay[pos,pre],pre]
drate3[pos,pre]=rate[2,delay[pos,pre],pre]
解决方案
将两个for
循环替换为:
drate1=rate[0, delay, np.arange(30)]
drate3=rate[2, delay, np.arange(30)]
推荐阅读
- c - 分配给非左值 'uxCurrentEventBits' event_groups.c 时出错
- npm - Conda:从 Github 和 pip 安装软件包的最佳方法
- sql - SQL 查询 - 未在下一个预计日期发货的订单
- javascript - 如何在进一步分析中使用下拉列表读取功能的结果?
- c# - 更改资源的颜色
- interstitial - 我想在 3 分钟交易时显示 facebook audiance network 插页式广告
- python-3.x - 时间序列数据在差分后不是平稳的?
- php - PHP 使用 str_starts_with 排除与通配符相同的数组
- vb.net - 如何在 VISUAL BASIC 中延迟打开下一个表单
- javascript - React:如何从不同的 onChange 事件触发 onChange 事件?