草庐IT

python - 将带@times 的 bsxfun 转换为 numpy

这是我在Octave中的代码:sum(bsxfun(@times,X*Y,X),2)代码的bsxfun部分产生逐元素乘法,所以我认为numpy.multiply(X*Y,X)可以解决问题,但我遇到了一个异常(exception)。当我做了一些研究时,我发现按元素乘法不适用于Python数组(特别是如果X和Y的类型为“numpy.ndarray”)。所以我想知道是否有人可以对此进行更多解释——也就是说,将类型转换为不同类型的对象会起作用吗?Octave代码有效,所以我知道我没有线性代数错误。我假设bsxfun和numpy.multiply实际上并不等同,但我不确定为什么这样任何解释都会很

python - python 中是否有与 MATLAB 函数 bsxfun 等效的函数?

我正在尝试将我的一些代码从matlab移植到python,其中一些使用bsxfun()函数进行虚拟复制,然后进行乘法或除法(我也将它用于逻辑运算)。我希望能够做到这一点,而无需在乘法或除法之前实际复制vector(使用函数或使用某种对角矩阵)以节省内存和时间。如果在某种C库中有等效的bsxfun,那当然也可以。 最佳答案 据我所知,没有真正的bsxfun等价物,尽管numpy确实为您处理了很多广播,正如其他人提到的那样。这通常被吹捧为numpy优于matlab的一个优势,确实很多广播在numpy中更简单,但bsxfun实际上更通用,