簡體   English   中英

將列表轉換為 numpy 掩碼數組

[英]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_arrayaxis=13indice的行表示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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM