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

Python数组值映射:限制x定义域后如何获取对应y数组?

提取对应定义域的y数组解法

嘿,这问题在日常数据处理里挺常见的,我给你分享几种实用的Python解法,按需选择就行:

方法1:纯Python原生列表处理(无需第三方库)

如果你的数据是普通Python列表,用zip把x和y配对,再通过列表推导式筛选就行,简单直接:

x = [1, 2, 3, 4, 5]
y = [10, 11, 6, 2.5, 0]
target_x = [2, 3, 4]

# 配对x和y,筛选出x在目标列表中的对应y值
filtered_y = [y_val for x_val, y_val in zip(x, y) if x_val in target_x]
print(filtered_y)  # 输出: [11, 6, 2.5]

注意:这个方法会保留原x数组中匹配项的顺序,要是x里有重复值,所有对应的y都会被提取出来。

方法2:用Numpy处理(适合大型数组/数值计算场景)

如果你的数据是Numpy数组(比如做数据分析、机器学习时),用布尔索引会更高效:

import numpy as np

x_np = np.array([1, 2, 3, 4, 5])
y_np = np.array([10, 11, 6, 2.5, 0])
target_x_np = np.array([2, 3, 4])

# 创建匹配掩码,提取对应y值
mask = np.isin(x_np, target_x_np)
filtered_y_np = y_np[mask]
print(filtered_y_np)  # 输出: [11.  6.  2.5]

# 如果需要转成普通列表
filtered_y_list = filtered_y_np.tolist()

这种方法速度快,尤其当数组规模很大时优势明显,而且支持更复杂的条件筛选。

方法3:按目标x的顺序提取(保持目标列表顺序)

如果需要严格按照target_x的顺序返回对应的y值(比如目标是[4,3,2]时返回[2.5,6,11]),可以用index方法:

x = [1, 2, 3, 4, 5]
y = [10, 11, 6, 2.5, 0]
target_x = [4, 3, 2]

filtered_y = [y[x.index(x_val)] for x_val in target_x]
print(filtered_y)  # 输出: [2.5, 6, 11]

注意:这个方法要求x中的元素是唯一的,否则index只会返回第一个匹配项的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:27:40