首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:映射四个数组

Python:映射四个数组
EN

Stack Overflow用户
提问于 2020-04-13 02:59:29
回答 2查看 52关注 0票数 2

我想要做的是以某种方式映射两个二维数组。我有两对对应的数组:

代码语言:javascript
复制
x1=[1,2,3,4,5]
y1=[7,9,10,17,4]

x2=[3,4,5,6,7]
y2=[5,4,1,13,12]

我想让我的程序做的是:

步骤1.比较x1和x2并查找匹配元素

代码语言:javascript
复制
[3,4,5]

步骤2.对于那些匹配的元素,执行匹配y元素的减法:

[y1(x)-y2(x)]=[y1(3)-y2(3), y1(4)-y2(4), y1(5)-y2(5)]

它与[10-5, 17-4, 4-1]=[5,13,3]相同:

步骤3.返回另外两个数组,这两个数组包含x1、y1、x2、y2中未使用的元素和减法操作后的元素。预期结果:

x = [1,2,3,4,5,6,7] y = [7,9,5,13,3,13,12]

有没有一种简单的方法来做这样的事情,比如使用map()?这些都是独立的数组。

EN

回答 2

Stack Overflow用户

发布于 2020-04-13 03:06:57

运算符要获取两个列表之间的公共元素,请使用set

  1. &

x_common_vals = set(x1) & set(x2) print(x_common_vals) #{3,4,5}

  • 对于减法运算,您需要在x1x2中获取每个值的索引,并在y1y2中获取该索引处的值,如y1[x1.index(value)]

3

  • WorkInProgress

= y_sub (map(lambda v: y1x1.index(v) - y2x2.index(v),x_common_vals)) print(y_sub) # 5,13,list

票数 1
EN

Stack Overflow用户

发布于 2020-04-13 03:31:39

代码语言:javascript
复制
print( [ y1[x1.index(elt)]-y2[x2.index(elt)] for elt in x1 if elt in x2 ] )

获取所有密钥,但效率不是很高

代码语言:javascript
复制
[ y1[x1.index(elt)]-y2[x2.index(elt)] if elt in x2 else y1[x1.index(elt)] for elt in x1 ]+[ y2[x2.index(elt)] for elt in x2 if elt not in x1 ]

这两个部分的另一种方法是使用字典来提高效率

代码语言:javascript
复制
d1 = {x:y for x,y in zip(x1,y1)}
d2 = {x:y for x,y in zip(x2,y2)}
d = d2.copy()
d = { k:(d1[k]-v if k in d1 else v) for k,v in d.items() }
res = d1.copy()
res.update(d)
X, Y = list(res.keys()), list(res.values())
print(X, Y, sep="\n")

如果你有很大的数据,那就使用pandas数据帧

代码语言:javascript
复制
import pandas as pd

df1 = pd.DataFrame({"k":x1, "v1":y1}).set_index("k")
df2 = pd.DataFrame({"k":x2, "v2":y2}).set_index("k")

def f(row):
    a, b = row[0], row[1]
    if a and b:
        return a - b
    elif a:
        return a
    else:
        return b

df = df1.join(other=df2, how="outer").fillna('')
df = pd.DataFrame({"v":df.apply(f, axis=1)} )
print(df)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61176629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档