我有一个二维 numpy 数组,形状(100,3)
a = np.random((100,3))
我想调用一个函数fun:
b = fun(a)
该函数当前定义为:
@np.vectorize
def fun(r):
if r <= 0.0: return 0.0
else: return min(2.0/(1.0 + r), 2.0*r/(1.0 + r))
这很有趣。但我想以一种更 numpythonic(因此更有效)的方式来表达这一点。我试过了:
def fun(r):
ans = zeros_like(r)
ans[r > 0.0] = min(2.0/(1.0 + r), 2.0*r/(1.0 + r))
return ans
但这不起作用,因为min没有做我想要的。我也试过:
def fun(r):
return np.piecewise(r
, [r <= 0.0, r > 0.0]
, [0.0, lambda x: min(2.0/(1.0 + x), 2.0*x/(1.0 + x))]
)
但出于类似的原因,这不起作用。那么我该怎么做呢?