初始化带有布尔掩码的一维numpy数组和包含非零值的较小数组

问题描述 投票:0回答:1

问题

我有 valid_data (具有非零值的 1D np.array )和 mask (布尔 1D np.array ),它们的大小不同。掩码包含要创建的新 np.array 中所需的 valid_data 位置。我可以轻松初始化这个新的 np.array 吗?或者我必须逐个值地计算它?

示例

>>> mask = np.array([False, True, False, False, False, True, True, False, False, False])
>>> valid_data = np.array([1, 3, 3])
>>> 
>>> wanted_result = np.array([0, 1, 0, 0, 0, 3, 3, 0, 0, 0])
>>> 
>>> my_try = np.where(mask, valid_data, 0)

但是我不能将 np.where 与不同形状的数组一起使用 我们可以假设 mask 中的 True 数量和 valid_data

中的值数量相同
python numpy boolean
1个回答
0
投票

使用

np.zeros
创建一个零数组,然后使用掩码分配
valid_data
中的值:

arr = np.zeros(len(mask), dtype=int)
arr[mask] = valid_data

输出:

array([0, 1, 0, 0, 0, 3, 3, 0, 0, 0])
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.