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

如何以参考数组为基准,用0(或NaN)填充目标数组?

问题描述

现有如下数组集合:

[
    ['ENST00000003084', 'ENST00000426809', 'ENST00000454343'],
    ['ENST00000003084', 'ENST00000426809', 'ENST00000446805', 'ENST00000454343'],
    ['ENST00000003084', 'ENST00000454343'],
    ['ENST00000003084', 'ENST00000426809', 'ENST00000454343', 'ENST00000600166']
]

需要将每个子数组按照参考数组的顺序对齐,缺失的位置填充为0,最终每个子数组都包含6个元素。参考数组如下:

['ENST00000003084', 'ENST00000426809', 'ENST00000446805',
 'ENST00000454343', 'ENST00000468795', 'ENST00000600166']

示例:输入子数组['ENST00000003084', 'ENST00000426809', 'ENST00000454343'],处理后输出:

['ENST00000003084', 'ENST00000426809', 0, 'ENST00000454343', 0, 0]
解决方案

通过遍历参考数组的每个元素,检查当前子数组中是否存在该元素,存在则保留原元素,不存在则填充0。Python实现代码如下:

# 定义参考数组
ref_array = ['ENST00000003084', 'ENST00000426809', 'ENST00000446805',
             'ENST00000454343', 'ENST00000468795', 'ENST00000600166']

# 输入的数组集合
input_arrays = [
    ['ENST00000003084', 'ENST00000426809', 'ENST00000454343'],
    ['ENST00000003084', 'ENST00000426809', 'ENST00000446805', 'ENST00000454343'],
    ['ENST00000003084', 'ENST00000454343'],
    ['ENST00000003084', 'ENST00000426809', 'ENST00000454343', 'ENST00000600166']
]

# 处理每个子数组
result = []
for arr in input_arrays:
    arr_set = set(arr)  # 转为集合提升查找效率
    aligned = [elem if elem in arr_set else 0 for elem in ref_array]
    result.append(aligned)

# 输出处理结果
for idx, res in enumerate(result):
    print(f"处理后的子数组{idx+1}: {res}")

运行结果

处理后的子数组1: ['ENST00000003084', 'ENST00000426809', 0, 'ENST00000454343', 0, 0]
处理后的子数组2: ['ENST00000003084', 'ENST00000426809', 'ENST00000446805', 'ENST00000454343', 0, 0]
处理后的子数组3: ['ENST00000003084', 0, 0, 'ENST00000454343', 0, 0]
处理后的子数组4: ['ENST00000003084', 'ENST00000426809', 0, 'ENST00000454343', 0, 'ENST00000600166']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:32:52