gpt4 book ai didi

python - python中根据相似值合并数组

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:33 26 4
gpt4 key购买 nike

我想根据每个数组每列中的第一个元素在 python 中合并两个数组。

例如,

A = ([[1, 2, 3],
[4, 5, 6],
[4, 6, 7],
[5, 7, 8],
[5, 9, 1]])

B = ([[1, .002],
[4, .005],
[5, .006]])

这样我就得到了一个数组

C = ([[1, 2, 3, .002],
[4, 5, 6, .005],
[4, 6, 7, .005],
[5, 7, 8, .006],
[5, 9, 1, .006]])

为了更清楚:

A 中的第一列是 1, 4, 4, 5, 5 并且B 的第一列是 1, 4, 5

因此 A 中的 1 与 B 中的 1 匹配并得到 0.002

我该如何在Python中做到这一点?任何建议都会很棒。

最佳答案

是否可以就地修改A?:

d = dict((x[0],x[1:]) for x in B)

现在d是一个字典,其中第一列是键,后续列是值。

for lst in A:
if lst[0] in d: #Is the first value something that we can extend?
lst.extend(d[lst[0]])

print A

不合适的地方(受到 Ashwini 答案的启发):

d = dict((x[0],x[1:]) for x in B)
C = [lst + d.get(lst[0],[]) for lst in A]

但是,使用这种方法,您需要在 A 和 B 中都有列表。如果您有一些列表和一些元组,它就会失败(尽管如果您需要的话可以解决这个问题) ),但这会使代码稍微复杂化。

使用这些答案中的任何一个,B 可以具有任意数量的列

作为风格的旁注:我会将列表写为:

A = [[1, 2, 3],
[4, 5, 6],
[4, 6, 7],
[5, 7, 8],
[5, 9, 1]]

我删除括号的地方......它们看起来太像您将列表放入元组中。 Python 的自动续行是通过括号 ()、方括号 [] 或大括号 {} 实现的。

关于python - python中根据相似值合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com