我有如下代码:
def infball_proj(mu, beta):
newmu = np.zeros(mu.shape)
if len(mu.shape) == 2:
for i in range(mu.shape[0]):
for j in range(mu.shape[1]):
if np.abs(mu[i,j]) > beta:
newmu[i,j] = np.sign(mu[i,j]) * beta
else:
newmu[i,j] = mu[i,j]
return newmu
elif len(mu.shape) == 1:
for i in range(mu.shape[0]):
if np.abs(mu[i]) > beta:
newmu[i] = np.sign(mu[i]) * beta
else:
newmu[i] = mu[i]
return newmu
有没有更聪明的方法可以做到这一点,所以我不必写两种不同的情况?如果我能有一个可以缩放到任意尺寸(即轴数)的版本,那就太好了。
像这样的事情应该做的工作:
newmu = np.where(np.abs(mu) > beta, np.sign(mu) * beta, mu)
或者,如果我的逻辑正确,
newmu = np.minimum(np.abs(mu), beta) * np.sign(mu)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句