【发布时间】:2017-10-23 12:07:15
【问题描述】:
我知道我可以替换 Python NumPy 数组中大于某个值的所有元素:
np.putmask(A, A>0.5, 5)
其中A>0.5 是阈值,5 是新的替换值。但是,我怎样才能在更多条件下做到这一点?例如:
if x.all <0:
return 00.1
elif x.all >0:
return 1
其中 x 是一个数组。我试图:
np.putmask(x, x<0, 00.1)
和
np.putmask(x, x>0, 1)
但是,我想在一行中完成。知道如何使用 putmask 或任何其他方法在一行中进行此类替换吗?
【问题讨论】:
-
自己写。
-
为什么要这样任意限制?可以做到,但是太傻了。
-
逐步函数 - 也许你在追求这样的东西:
(x > 0) * 0.9 + 0.1(大概,x是一个 numpy 数组) -
如果你想实现一个逐步的功能,你可以做
f(x) if x > 0 else g(x)。这可能是XY problem。你能准确描述你想做什么吗?向我们展示您迄今为止所做的相关代码可能会有所帮助。 -
您的标题询问有关设置某些值的问题。您的问题的一部分也涉及到这一点。但是随后您问如何在一行中进行多次重新分配。所以我问你为什么必须在一行中完成,你说你正在尝试实现一个逐步函数。然后,代码中的条件块必须从函数返回值,而不是分配值。我在这里看到了 3 个不同的问题,您想要做的一件事是什么?