[英]Write to a masked array in numpy
假设我有一个数组x
和一个数组mask
。 我想使用np.copyto
使用mask
写入x
。 有办法吗? 我想只是尝试使用copyto
不起作用,因为带掩码的x
是不可写的。
x = np.array([1,2,3,4])
mask = np.array([False,False,True,True])
np.copyto(x[mask],[30,40])
x
# array([1, 2, 3, 4])
# Should be array([1, 2, 30, 40])
如评论的索引分配的作品
In [16]: x[mask]=[30,40]
In [17]: x
Out[17]: array([ 1, 2, 30, 40])
使用x[mask]
时必须小心。 那就是“高级索引”,所以它创建一个副本,而不是x
的视图。 使用直接分配不是问题,但是使用copyto x[mask]
作为参数传递给函数。
In [19]: y=x[mask]
In [21]: np.copyto(y,[2,3])
更改y
,但不更改x
。
检查其文档,我发现copyto
确实接受where
参数,该参数可以用作
In [24]: np.copyto(x,[0,0,31,41],where=mask)
In [25]: x
Out[25]: array([ 1, 2, 31, 41])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.