Python 平均列2D数组
我有一个2D arraylist数据,它用如下循环填充:Python 平均列2D数组,python,arrays,list,average,multidimensional-array,Python,Arrays,List,Average,Multidimensional Array,我有一个2D arraylist数据,它用如下循环填充: data.append([TrueID,rssi]) 经过8次之后,我得到了以下数据值: data = [['469420270013002A', -90], ['469420270005000C', -89], ['469420270013002A', -94], ['4694202700270003', -53], ['469420270005000C', -91],
data.append([TrueID,rssi])
经过8次之后,我得到了以下数据值:
data =
[['469420270013002A', -90],
['469420270005000C', -89],
['469420270013002A', -94],
['4694202700270003', -53],
['469420270005000C', -91],
['469420270013002A', -92],
['4694202700270003', -55]]
我想计算每个TrueID的平均RSSI值,并返回其TrueID的最低RSSI值
所以我需要输出:
print "The weakest ID is " ID_result " with Rssi value of " rssi_result
>>The weakest ID is '4694202700270003' with Rssi value of -54
有必要将2D数组填充到20个值,并像FIFO系统一样继续
欢迎提出所有建议(即使您知道其他方法可以获得相同的结果)
谢谢大家! 使用和max
:
>>> from collections import defaultdict
>>> lis = [['469420270013002A', -90],
['469420270005000C', -89],
['469420270013002A', -94],
['4694202700270003', -53],
['469420270005000C', -91],
['469420270013002A', -92],
['4694202700270003', -55]]
>>> d = defaultdict(list)
>>> for k, v in lis:
d[k].append(v)
...
现在d
包含:
>>> d
defaultdict(<type 'list'>,
{'469420270005000C': [-89, -91],
'4694202700270003': [-53, -55],
'469420270013002A': [-90, -94, -92]})
-54
实际上将是此处的最大值。请提供您尝试过的示例代码。谢谢Ashwini Chaudhary!它的工作原理与u所说的一样,还有一件事:20个值覆盖原始值后如何像fifo系统一样执行?@user3055369使用maxlen=20
,获得fifo系统。我通过使用append和pop解决了这个问题:lis.append([TrueID,rssi])d2counter+=1如果d2counter>=20:lis.pop(0)
>>> max({k:sum(v)/float(len(v)) for k, v in d.items()}.items(), key=lambda x:x[1])
('4694202700270003', -54.0)