Python中的MATLAB arrayfun替代方案

2024-09-30 00:34:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在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]); 

上面的代码片段不工作,因为我猜我必须矢量化某个地方?你知道吗

谢谢你的意见。你知道吗


Tags: 模型lognpdotdiagsummatlablogical
1条回答
网友
1楼 · 发布于 2024-09-30 00:34:46

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

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

相关问题 更多 >

    热门问题