【发布时间】:2017-12-06 03:22:45
【问题描述】:
我有一些随机数(整数和浮点数)的列表
In[]: list1
Out[]: [8.6, 9, 15, 20, 1]
我找到了列表的平均值/平均值:
m = reduce(lambda x, y: x + y, list1) / len(list1)
这会输出 10.72 。
现在,我必须从列表 list1 中找到最接近 avg 的数字。
在上面的例子中,从 list1 到 10.72 的关闭数是 9。
一种方法是找到列表中avg和每个元素之间的差异,然后寻找最小差异,然后输出产生最小差异的那个元素,但我一直在寻找更清晰有效的方法,请给我推荐一个。
【问题讨论】:
-
我猜:
a = np.asarray(list1)然后:a[np.abs(a - a.mean()).argmin()]? -
以下所有答案实际上都做了 OP 不想做的事情,但至少他们做得很清楚。
-
@cᴏʟᴅsᴘᴇᴇᴅ 什么答案? :P
-
哇... wtf....
-
使用数组版本:
a = np.asarray(list1)并使用a.mean()获取平均值,然后为其余工作获取链接的 dup。
标签: python list pandas numpy mean