这里有一种方法:
In [1]: index_array = np.array([3, 4, 7, 9])
In [2]: n = 15
In [3]: mask_array = np.zeros(n, dtype=int)
In [4]: mask_array[index_array] = 1
In [5]: mask_array
Out[5]: array([0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0])
如果屏蔽始终是一个范围,可以消除index_array
,并分配给1
片:
In [6]: mask_array = np.zeros(n, dtype=int)
In [7]: mask_array[5:10] = 1
In [8]: mask_array
Out[8]: array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0])
如果你想布尔值,而不是整数数组,改变mask_array
的dtype
创建时:
In [11]: mask_array = np.zeros(n, dtype=bool)
In [12]: mask_array
Out[12]:
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False], dtype=bool)
In [13]: mask_array[5:10] = True
In [14]: mask_array
Out[14]:
array([False, False, False, False, False, True, True, True, True,
True, False, False, False, False, False], dtype=bool)
scipy有一个蒙面数组模块。这与问题有关。 http://docs.scipy.org/doc/numpy/reference/maskedarray.html – 2014-09-03 22:57:31
'[x in index_array for x in range(500)]'这样做,但用'True'和'False'代替1和0. – genisage 2014-09-03 23:03:16
@genisage你可以请你的评论作为答案?我想选择你的。这是我一直在寻找的确切的东西。谢谢你的回答! – Efreeto 2014-09-04 04:47:15