gpt4 book ai didi

python - 在Python中。我有一个 ND 数组列表,我想计算重复数组的数量,以便计算每个重复数组值的平均值

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

我有一个 ND 数组(向量)列表,每个向量都有一个 (1,300) 形状。
我的目标是在列表中找到重复的向量,将它们相加,然后将它们除以列表的大小,结果值(向量)将替换重复的向量。
例如,a 是 ND 数组的列表,a = [[2,3,1],[5,65,-1],[2,3,1]],那么第一个和最后一个元素是重复的。他们的总和将是:[4,6,2],它将除以向量列表的大小,size = 3

输出:a = [[4/3,6/3,2/3],[5,65,-1],[4/3,6/3,2/3]]

我尝试使用计数器,但它不适用于 ndarray。

Numpy 的方式是什么?谢谢。

最佳答案

如果您有 numpy 1.13 或更高版本,这非常简单:

def f(a):
u, inv, c = np.unique(a, return_counts = True, return_inverse = True, axis = 0)
p = np.where(c > 1, c / a.shape[0], 1)[:, None]
return (u * p)[inv]

如果你没有 1.13,你需要一些技巧来转换 a首先进入一维数组。我推荐 @Jaime 的优秀答案,使用 np.void here

它是如何工作的:

  • ua 的唯一行(通常不按原来的顺序)
  • cu每行出现的次数a 中重复
  • inv是要获取u的索引返回a ,即u[inv] = a
  • pu 每行的乘数根据您的要求。 1如果c == 1c / n (其中 na 中的行数)如果 c > 1[:, None]将其转换为列向量,以便它可以通过 u 很好地广播

返回u * p[inv] 索引回其原始位置

关于python - 在Python中。我有一个 ND 数组列表,我想计算重复数组的数量,以便计算每个重复数组值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821684/

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