這裏有一種方法:
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