【问题标题】:Sorting the Value of 2d-Array with Key-Value by column in Python在Python中按列对具有键值的二维数组的值进行排序
【发布时间】:2017-05-27 06:41:18
【问题描述】:

我想按列对二维数组进行排序

未排序:

[('222801', '4470'), ('222802', '4753.5')], [('222811', '4468.5'), ('222812', '4742.5')]]

排序:

[('222811', '4468.5'), ('222812', '4742.5')], [('222801', '4470'), ('222802', '4753.5')]]

我之前认为,它必须转换为元组中值的浮点数。

我想计算 log10,然后计算平均逐行余波。所以将值的结果作为未排序列表中的替换 谁能帮帮我?

例如 //转换为Float然后计算log10

[(222811, log10(4468.5)), (222812, log10(4742.5))], [(222801, log10(4470)), (222802, log10(4753.5))]]

//然后逐行计算平均值

[(222811, log10(4468.5))+log10(4742.5)+log10(4470)+log10(4753.5)/len(arr), (222812, log10(4468.5)+log10(4742.5)+log10(4470)+log10(4753.5)/len(arr)], [(222801, log10(4468.5))+log10(4742.5)+log10(4470)+log10(4753.5)/len(arr), (222802, log10(4468.5))+log10(4742.5)+log10(4470)+log10(4753.5)/len(arr))]]

【问题讨论】:

  • 这种排序背后的想法是什么?
  • 我想计算 log10,然后计算平均余波。所以将值的结果作为替代品放在未排序的列表中
  • 我没明白你的意思,你能在那个例子中解释一下吗?
  • 如示例中出现的,第二项都是一样的,那你应该怎么排序呢?

标签: python arrays sorting


【解决方案1】:

如果你想按内部列表中第一个元组的第一个元素进行排序,你可以这样实现:

from math import log10

a1 = [[('222801', '4470'), ('222802', '4753.5')], [('222811', '4468.5'), ('222812', '4742.5')]]
mean = sum([log10(float(b)) for a in a1 for b in zip(*a)[1]])/2
mapped_a1 = [[(b[0][0],mean), (b[1][0],mean)] for b in a1]
sorted_a1 = sorted(mapped_a1, key=lambda x: x[0][0], reverse=True)
print sorted_a1

输出:

[[('222811', 7.326745061604671), ('222812', 7.326745061604671)], [('222801', 7.326745061604671), ('222802', 7.326745061604671)]]

【讨论】:

  • 你怎么知道他想要按第一个元素排序
  • 那么log10 的事情呢?
  • @Arman Log 可以用地图函数计算。但下一步没有意义。他正在向元组添加浮点值。
  • @MYGz 是有意的,它是与浮动。我的意思是,它必须被转换成一个浮点数
  • @user3786117 这没有意义(222811, log10(4468.5))+log10(4742.5)+log10(4470)+log10(4753.5)/len(arr)。您正在向元组添加浮点值,但尚未定义 arr 是什么。请花点时间编辑您的问题。
猜你喜欢
  • 2020-06-26
  • 1970-01-01
  • 2023-03-26
  • 2022-01-01
  • 2013-04-12
  • 1970-01-01
  • 2011-10-25
  • 2011-07-15
相关资源
最近更新 更多