【发布时间】: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