繁体   English   中英

写入numpy中的蒙版数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM