【问题标题】:Scale rows of 3D-tensor缩放 3D 张量行
【发布时间】:2016-11-08 13:30:31
【问题描述】:

我有一个n-by-3-by-3 numpy 数组A 和一个n-by-3 numpy 数组B。我现在想将n3-by-3 矩阵的每一行的每一行与B 中的相应标量相乘,即,

import numpy as np

A = np.random.rand(10, 3, 3)
B = np.random.rand(10, 3)

for a, b in zip(A, B):
    a = (a.T * b).T
    print(a)

没有循环也可以做到这一点吗?

【问题讨论】:

  • 啊哈!我一直使用.T-.T 舞蹈进行行缩放,但这个实际上更好。如果您将评论提升为答案,我很乐意将其标记为解决方案。

标签: python arrays numpy matrix


【解决方案1】:

您可以使用NumPy broadcasting 在将B 扩展到3D 之后,在使用np.newaxis 或其别名/简写None 的末尾添加一个单一维度后,让元素乘法以矢量化方式发生。因此,实现将是A*B[:,:,None] 或简单的A*B[...,None]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 2021-08-08
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多