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

阵列广播能否将较大的维度视为较小的数字?

  •  0
  • roshoka  · 技术社区  · 1 年前

    我试图通过使用阵列广播来避免for循环,以节省时间。

    我的设置如下:我有一个长度为的列数组 n 其中每个元素是 mxm 数组(我称之为 A )

    enter image description here

    nxm 数组(我称之为 E )

    enter image description here

    我的最终目标是

    enter image description here

    其中,这个新数组的每一行都是a_i(a)之间数组广播的结果 mxm 数组)及其在E中的对应行(具有t_i的行)。

    看起来正常的阵列广播规则不会允许这种情况发生,因为从技术上讲 A. 是a nmxm 阵列,我不相信,可以用它来广播 E 自从 E nxm 但你也可以考虑 A. 作为一个 nx1 列中的每个元素都是 mxm 数组,则维度将在数组广播规则范围内。有没有办法迫使这种情况发生?

    此外,在我的实际代码中,每个 A_i 是一样的。也许这会让事情变得更容易。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Cp Gowtham    1 年前

    为了避免for循环,使用np.examp_dims(E,axis=1)将E重塑为(n,1,m)。这允许使用形状为(n,m,m)的A进行广播。由于每个A_i都是相同的,因此可以使用A中的单个矩阵进行操作。

    推荐文章