【发布时间】:2021-04-30 02:02:35
【问题描述】:
基本上有一个 Numpy 或 PyTorch 函数可以做到这一点:
vp_sa_s=mdp_data['sa_s'].detach().clone()
dims = vp_sa_s.size()
for i in range(dims[0]):
for j in range(dims[1]):
for k in range(dims[2]):
# to mimic matlab functionality: vp(mdp_data.sa_s)
try:
vp_sa_s[i,j,k] = vp[mdp_data['sa_s'][i,j,k]]
except:
pass
鉴于vp_sa_s 的大小为(10,5,5),并且每个值都是有效的索引vp,即在0-9 范围内。 vp 的大小为(10,1),带有一堆随机值。
Matlab 使用vp(mdp_data.sa_s) 优雅而快速地完成它,这将形成一个新的(10,5,5) 矩阵。如果mdp_data.sa_s 中的所有值都是1,则结果将是(10,5,5) 张量,每个值都是vp 中的第一个值。
是否存在一个函数或方法可以在少于 O(N^3) 的时间内实现这一点,因为上面的代码效率非常低。
谢谢!
【问题讨论】:
标签: python matlab numpy matrix pytorch