![](/img/trans.png)
[英]Replace all elements of Python NumPy Array that are greater than some value
[英]How to replace all elements of Python NumPy Array that are greater than a several values?
我知道我可以替换大于某些值的Python NumPy Array的所有元素:
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或任何其他方法在一行中进行这种类型的替换?
您在寻找双重np.where即
A = np.array([0,1,2,3,1,-5,-6,-7])
k = np.where(A>0,1,np.where(A<0,0.01,A))
或者,您可以将np.select
用于多个条件。
k = np.select([A>0,A<0],[1,.01],A)
:
[ 0. 1. 1. 1. 1. 0.01 0.01 0.01]
您可以创建每个条件的掩码(逻辑数组),然后应用所有掩码。
# Create masks
mask1 = (x < 0)
mask2 = (x > 0)
# Apply masks
x[mask1] = 0.1
x[mask2] = 1
如果您真的需要单行:
mask1 = (x < 0); mask2 = (x > 0); x[mask1] = 0.1; x[mask2] = 1
您也可以像示例代码中一样使用putmask
函数:
mask1 = (x < 0); mask2 = (x > 0); np.putmask(x, mask1, 00.1); np.putmask(x, mask2, 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.