代码之家  ›  专栏  ›  技术社区  ›  chenzhongpu

numpy:如何在两个不同形状的数组之间计算这个产品?

  •  0
  • chenzhongpu  · 技术社区  · 6 年前

    很抱歉,我的问题标题听起来可能含糊不清,因为我不知道这类操作的确切名称。

    给定张量 A (n_m_m)和一维数组 b (n)我想换一个张量 B (nmm)使得 是二者之间的乘法 .

    一个可能但丑陋的解决方案是展平(重塑) 首先,即转换 在二维数组中,然后应用 dot 手术,最后整形背部。

    是否有标准/简单的操作 numpy 要做到这一点?

    例如,

    A = np.ones(12).reshape(3, 2, 2)
    b = np.array([2, 3, 4])
    

    预期的

    [[[2, 2],
      [2, 2]],
     [[3, 3],
      [3, 3]],
     [[4, 4],
      [4, 4]]]
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Thomas Baruchel    6 年前

    你要找的是 broadcasting ;换言之,重塑数组 b 有价值的 1 在某些维度中,为了更好地控制将要发生的事情;中的元素总数 将保持不变,但您可以选择数组在算术运算期间的行为方式:

    A*b.reshape((3,1,1))
    
    推荐文章