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

如何截取理论数组的子数组以匹配实验数组的形状?

从理论数组中提取与实验数组匹配的对应元素

以下是几种Python实现方法,可根据数据规模和使用场景选择:

方法一:基础遍历匹配(适合小规模数据)

直接遍历实验数组的x值,找到其在理论数组中的位置,提取对应元素:

x1 = [1,2,3,4,5,6,7,8,9,10]
y1 = [1,4,9,16,25,36,49,64,81,100]
x2 = [3,5,7,9]

x1_new = []
y1_new = []

for val in x2:
    idx = x1.index(val)
    x1_new.append(val)
    y1_new.append(y1[idx])

print(x1_new)  # 输出: [3, 5, 7, 9]
print(y1_new)  # 输出: [9, 25, 49, 81]

注意:此方法要求x1中的元素唯一,否则index()只会返回第一个匹配值的索引。

方法二:列表推导式简化写法

通过zip()将理论数组的x、y值配对,再筛选出与实验数组匹配的项:

x1 = [1,2,3,4,5,6,7,8,9,10]
y1 = [1,4,9,16,25,36,49,64,81,100]
x2 = [3,5,7,9]

# 配对x1和y1的对应元素
paired_data = list(zip(x1, y1))
# 筛选出x值在x2中的项
filtered_data = [item for item in paired_data if item[0] in x2]

# 拆分回两个列表
x1_new, y1_new = zip(*filtered_data)
# 转换为列表类型(可选,zip返回的是元组)
x1_new = list(x1_new)
y1_new = list(y1_new)

print(x1_new)
print(y1_new)

方法三:numpy高效处理(适合大规模数值数组)

如果数据是numpy数组,用向量操作会更高效:

import numpy as np

x1 = np.array([1,2,3,4,5,6,7,8,9,10])
y1 = np.array([1,4,9,16,25,36,49,64,81,100])
x2 = np.array([3,5,7,9])

# 生成掩码,筛选x1中属于x2的元素
mask = np.isin(x1, x2)
x1_new = x1[mask]
y1_new = y1[mask]

# 确保结果顺序与x2一致(若x2顺序和x1中元素出现顺序不同时需要)
sorted_indices = np.argsort(np.searchsorted(x1, x2))
x1_new = x1_new[sorted_indices]
y1_new = y1_new[sorted_indices]

print(x1_new)  # 输出: [3 5 7 9]
print(y1_new)  # 输出: [ 9 25 49 81]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:10:38