[英]Convert a list to a numpy mask array
給定像indice = [1, 0, 2]
和維度m = 3
這樣的列表,我想得到這樣的掩碼數組
>>> import numpy as np
>>> mask_array = np.array([ [1, 1, 0], [1, 0, 0], [1, 1, 1] ])
>>> mask_array
[[1, 1, 0],
[1, 0, 0],
[1, 1, 1]]
給定m = 3
,因此mask_array
的axis=1
為3
, indice
的行表示mask_array
的長度。
為了將mask_array
indice
規則是將索引小於或等於內部每個條目的項目值標記為值 1。例如, indice[0]=1
,因此 output 為[1, 1, 0]
,給定維度為 3。
在 NumPy 中,是否有任何 API 可用於執行此操作?
當然,只需將廣播與arange(m)
一起使用,確保使用np.array
作為indices
,而不是列表...
>>> indice = [1, 0, 2]
>>> m = 3
>>> np.arange(m) <= np.array(indice)[..., None]
array([[ True, True, False],
[ True, False, False],
[ True, True, True]])
請注意, [..., None]
只是重塑了索引數組,以便廣播像我們想要的那樣工作,如下所示:
>>> indices = np.array(indice)
>>> indices
array([1, 0, 2])
>>> indices[...,None]
array([[1],
[0],
[2]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.