I have two numpy arrays e.g.:
names = np.array(['A', 'B', 'C', 'D']) # (B, 1)
mask = np.array([ # (N, B)
[True, False, False, False],
[False, True, False, True ],
[True, True, False, False]
])
I want to get an 1 dimensional array of lists with shape (N,)
, where for each row in mask
I have a list of the names in names
for which the value was True
. Here that would be:
result = [
['A'],
['B', 'C'],
['A', 'B']
]
Any idea how?
CodePudding user response:
For each array m
in mask
, you can subset names
based on the values of m
.
[list(names[m]) for m in mask]
# [['A'], ['B', 'D'], ['A', 'B']]