遮蔽NumPy数组的特定列

5
我有一个形状为(60,1000)的2D numpy数组A。
假设我有一个变量idx=array([3,72,403, 512, 698])

现在,我想掩盖指定在idx中的所有列中的元素。这些列中的值可能会出现在其他列中,但它们不应被屏蔽。

任何帮助将不胜感激。


“mask”这个词具体指什么? - NPE
创建一个新的数组,该数组是原始数组的副本,并排除 idx 列,这样做是否可以解决您的问题? - JonathanV
1
@JonathanV,不完全是这样,因为我需要在后续计算中跟踪索引。如果我修改数组索引,将很难进行跟踪。 - jitendra
@NPE,我在问有关numpy.ma库中掩码的问题。我基本上需要的是空值。 - jitendra
1个回答

11
In [22]: A = np.random.rand(5, 10)

In [23]: idx = np.array([1, 3, 5])

In [24]: m = np.zeros_like(A)

In [25]: m[:,idx] = 1

In [26]: Am = np.ma.masked_array(A, m)

In [27]: Am
Out[27]: 
masked_array(data =
 [[0.680447483547 -- 0.290757600047 -- 0.0718559525615 -- 0.334352145502
  0.0861242618662 0.527068091963 0.136280743038]
 [0.729374999214 -- 0.76026650048 -- 0.656082247985 -- 0.492464543871
  0.903026937193 0.0792660503403 0.892132409419]
 [0.0845266821684 -- 0.838838594048 -- 0.396344231382 -- 0.703748703373
  0.380441396691 0.010521007806 0.344945867845]
 [0.7501401585 -- 0.0685427000113 -- 0.587100320511 -- 0.780160645327
  0.276328587928 0.0665949459004 0.604174142611]
 [0.599926798275 -- 0.686378805503 -- 0.776940069716 -- 0.0452833614622
  0.598622591094 0.942843765543 0.528082379918]],
             mask =
 [[False  True False  True False  True False False False False]
 [False  True False  True False  True False False False False]
 [False  True False  True False  True False False False False]
 [False  True False  True False  True False False False False]
 [False  True False  True False  True False False False False]],
       fill_value = 1e+20)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接