不同维度上的两个二维数组的微积分(python 3)

问题描述 投票:0回答:0

我有两个二维数组,我必须减去它们,但不是在同一维度上,而且数组有不同的大小。如果我理解正确的话,有一种叫做广播的东西可以做我需要的事情,我认为这篇文章 (Link) 展示了做这件事所需的一切,但我很难将它应用到我的问题上,而且,可能有更直接的方法那么我到目前为止的想法。

问题

这是问题的一般逻辑(如下图所示,如果您处于黑暗模式,请为黑色字体道歉):我有两个数组,目前都在相同的维度上,它们在行中的大小不同(m和 n 行)。在它们当前的形状中,它们仅在列中匹配,我想按列将一个数组的每个值减去另一个数组的每个值。

我不知道可以而且应该执行哪些功能和操作才能有效地执行此操作而无需循环。我目前有一个循环来执行此操作,但是我在这里处理的数据非常大,需要 12 分钟才能完成。

我的想法

我想我可以先 (1) 将第一个数组转置到不同的维度上,然后 (2) 按另一个数组的行数重复它,以便在连接时得到一个

m*n*500
数组。

然后我对第二个数组做同样的事情,只是为了不同的维度,并按照之前另一个数组的行数重复它。然后当连接起来时它们应该具有相同的大小。

然后,最后,我将能够简单地将两个数组从另一个数组中减去,而不会发生任何维度冲突。

如上所述,我不知道如何在 numpy 中执行此操作,并且我很难将类似问题的答案应用于我的问题。非常感谢您对此的帮助。

python numpy numpy-ndarray
© www.soinside.com 2019 - 2024. All rights reserved.