You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将下采样得到的numpy掩码填充回原始长度以筛选原始数组数据

实现方案

你可以直接用NumPy内置的repeat方法实现掩码的高效扩展,全程为向量化操作,没有Python层循环,性能极高,适配任意步长场景。

核心逻辑为:将掩码的每个布尔值重复步长次,再截断到和原始数组相同的长度即可。

示例验证(适配你给出的测试用例)

import numpy as np

a = np.arange(0, 10)
step = 3
b = a[::step]
mask = (b > 5)

# 核心填充逻辑
mask_padded = np.repeat(mask, step)[:len(a)]

c = a[mask_padded]
print(c)
# 输出结果:[6 7 8 9],完全符合预期

适配你最初的步长为10的场景

注意你最初的掩码是通过np.diff计算得到的,此时mask的长度比下采样后的数组b少1,你可以根据业务需要补一个布尔值后再做扩展,示例如下:

import numpy as np

step = 10
# 你的原有逻辑
b = a[::10]
derivative = np.diff(b, axis=0)
mask = (np.linalg.norm(derivative[:, :], axis=1) > 0.01)

# 补位使mask长度和b一致,这里以复用最后一个掩码值为例,可按需改为True/False
mask = np.append(mask, mask[-1])
# 扩展为原始数组长度的掩码
mask_padded = np.repeat(mask, step)[:len(a)]

# 筛选原始数组
c = a[mask_padded, :]

内容的提问来源于stack exchange,提问作者Andreas Schuldei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:45:03