【问题标题】:MATLAB arrayfun alternative in PythonPython 中的 MATLAB arrayfun 替代方案
【发布时间】:2018-06-20 04:13:37
【问题描述】:

在 MATLAB 中,我执行如下操作:

z = diag(c)*D*x;
idxN = z<0; idxP = z>=0; % logical indexing
y1 = sum(-z(idxN))+sum(arrayfun(@(x) log(exp(x)+1),z(idxN))); 

我正在尝试编写一个 Python:

z = np.diagflat(c).dot(D).dot(x)
idxN = z<0, idxP = z>=0
y1 = np.sum(-z[idxN])+np.sum(math.log(np.exp(x)+1),z[idxN]); 

上面的 sn-p 不起作用,因为我猜我必须在某个地方矢量化?

感谢您的意见。

【问题讨论】:

  • arrayfun 不是矢量化,它是循环的简写。只需使用循环,或重写代码以使用矢量化。

标签: python matlab vectorization


【解决方案1】:

arrayfun 是 MATLAB 中循环的单行包装器。在 Python 中,你可以这样做:

y1 = np.sum(-z[idxN]) + np.sum([math.log(np.exp(x)+1) for x in z[idxN]])

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2011-02-09
    • 2015-06-19
    相关资源
    最近更新 更多