繁体   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