【发布时间】:2023-04-03 20:38:01
【问题描述】:
当我创建一个 Numpy 掩码数组的视图(通过切片)时,掩码会复制到视图中——因此对视图的更新不会更改原始掩码(但会更改原始数组中的数据)。
我想要的是在更新视图时同时更改原始数据和原始掩码。
访问切片时,输出是一个掩码数组,其数据属性 是原始数据的视图,其掩码为 nomask(如果有 原始数组中没有无效条目)或 原始掩码的相应切片。副本需要避免 将掩码的任何修改传播到原始版本。
示例
import numpy.ma as ma
orig_arr = ma.array([[11,12],[21,22]])
orig_arr[1,:] = ma.masked
print orig_arr
## Prints: [[11 12]
## [-- --]]
view_arr = orig_arr[1,:]
print view_arr
## Prints: [-- --]
view_arr[:] = [31,32]
print view_arr
## Prints: [31 32]
print orig_arr
## Prints: [[11 12]
## [-- --]]
print orig_arr.data[1,:]
## Prints: [31 32]
如您所见,原始数组中的数据已更新,但是 面具没有。
如何使视图中的更新影响原始数组中的掩码?
【问题讨论】:
标签: python numpy masked-array