【发布时间】:2018-06-26 04:33:17
【问题描述】:
我有一个(大)4D 数组,由矩阵字段的给定基础中的 5 个系数组成。给定 5 个基矩阵,我想有效地计算矩阵字段。
系数字段c[x,y,z,i]是第i个系数在位置x,y,z的值
矩阵字段M[x,y,z,a,b]是(3,3)位置x,y,z的矩阵
基矩阵T_1,...T_5,即(3,3)基矩阵
我可以遍历空间中的每个位置:
M[x,y,z,:,:] = T_1[:,:]*c[x,y,z,0] + T_2[:,:]*c[x,y,z,1]...T_5[:,:]*c[x,y,z,4]
但这是非常低效的。我尝试使用 np.multiply,np.sum 会导致广播错误,因为所需的产品是 3x3 矩阵的字段。
【问题讨论】:
-
所以在你的文字中你提到
M[x,y,z,a,b],然后当你计算它时M[x,y,z]哪个是维度?你能提供一个虚拟的例子吗? -
快速评论,
np.apply_along_axis()似乎是提供系数时的解决方案-->矩阵转换函数。 -
这是附加问题的一种非常低效的方法,因为您没有任何用张量无法完成的繁重功能。查看
einsum,可以将T_i打包成一个矩阵,然后使用张量表示法:docs.scipy.org/doc/numpy-1.14.0/reference/generated/…