将一个数组的唯一值映射到另一个数组的对应总和

Posted

技术标签:

【中文标题】将一个数组的唯一值映射到另一个数组的对应总和【英文标题】:Map Unique Values From One Array to Corresponding Sum of Another Array 【发布时间】:2021-08-20 23:46:51 【问题描述】:

我有两个数组。下面显示的是每个预览:

[0.25 0.5  0.75 ... 0.   0.   0.25]
[0.51725357 0.51725357 0.51725357 ... 0.56406901 0.51725357 0.51725357]

您可能会注意到第二个数组的值经常重复。我想做的是创建两个相同长度的新数组。一个数组将由我列出的第二个数组中的所有唯一值组成。另一个数组将由第一个数组中与第二个数组中的唯一值相对应的所有值的总和组成。

例如,在我展示的数组中,0.51725357 与第一个数组的累积和为 1.75,因此如果 0.51725357 是第一个新数组中的第一个条目,那么 1.75 将是第二个数组中的第一个值的新数组。

我知道我的措辞不够好,但希望我的问题足够清楚。谢谢你。使用任何包都可以。

【问题讨论】:

【参考方案1】:

由于您对任何软件包都持开放态度,因此我建议 pandas 使用 groupby 功能:

import pandas as pd

# just for display purposes:
>>> pd.options.display.precision = 10

l1 = [0.25 ,0.5 , 0.75,0.   ,0.   ,0.25]
l2 = [0.51725357 ,0.51725357 ,0.51725357,0.56406901 ,0.51725357, 0.51725357]

>>> pd.DataFrame("l1": l1, "l2": l2).groupby("l2").sum()
 
              l1
l2              
0.51725357  1.75
0.56406901  0.00

【讨论】:

正是我想要的,谢谢!

以上是关于将一个数组的唯一值映射到另一个数组的对应总和的主要内容,如果未能解决你的问题,请参考以下文章

将数组项映射/链接到另一个对象的键

最小唯一数组总和

数组560. 和为K的子数组

将二维数组的每个元素映射到python中对应的(x,y)坐标

数组中的两个不同数字,它们的和等于给定值

Matlab:将数组中的元素和到另一个数组中