当前位置:  开发笔记 > 编程语言 > 正文

添加具有不同尺寸的矩阵

如何解决《添加具有不同尺寸的矩阵》经验,为你挑选了0个好方法。

在numpy和tensorflow中,如果较小矩阵的形状是较大矩阵的后缀,则可以添加不同维度的矩阵(或张量).这是一个例子:

x = np.ndarray(shape=(10, 7, 5), dtype = float)
y = np.ndarray(shape=(7, 5), dtype = float)

对于这两个矩阵,操作x+y是一个快捷方式:

for a in range(10):
    for b in range(7):
        for b in range(5):
            result[a,b,c] = x[a,b,c] + y[b,c]

在我的情况,但是我有形状的矩阵(10,7,5)(10,5)与同样予想执行+使用类似的逻辑运算:

for a in range(10):
    for b in range(7):
        for b in range(5):
            result[a,b,c] = x[a,b,c] + y[a,c]
                                         ^

在这种情况下,x+y操作失败,因为numpy和tensorflow都不了解我想要做的事情.有没有什么方法可以有效地执行此操作(不自己编写python循环)?

到目前为止,我已经想过我可以使用einsum 引入一个临时z的形状矩阵,(10,7,5)如下所示:

z = np.einsum('ij,k->ikj', y, np.ones(7))
x + z

但这会创建一个明确的三维矩阵(或张量),如果可能的话我宁愿避免这种情况.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有