[英]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.