2014-11-21 62 views
-1

如果我有一个numpy的数组:简单的方法

x1 = np.arange(9.0).reshape((3, 3)) 

我要选择具有值N的所有元素,并用M值如何替换它们会有一个聪明的方式去解决它?

我知道我可以使用此功能,使其返回1,其中满足条件

(x1 == 4).astype(int) 

回报:

array([[0, 0, 0], 
    [0, 1, 0], 
    [0, 0, 0]]) 

我希望能够选择的号码自己。

回答

1

您可以使用下面的代码很容易地使用N索引。

该代码根据每个元素是否等于N,创建一个掩码TrueFalsex==N。如果该值等于N则为真,反之亦然。然后,您使用此掩码进行索引,并将TrueM分配。

x = np.arange(9).reshape((3,3)) 

N = 4 
M = 100 

x[x==N] = M 

print(x) 
# array([[ 0, 1, 2], 
#  [ 3, 100, 5], 
#  [ 6, 7, 8]]) 
+0

太棒了!谢谢 – NicolaiF 2014-11-21 14:39:28