[英]Averaging column 2D array python
我有一个2D arraylist数据,它充满了这样的循环:
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系统一样继续进行。
欢迎所有建议(即使您知道其他方法也可以达到相同的结果)!
谢谢!
使用collections.defaultdict
和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]})
现在使用max
和dict理解来计算平均值并找出最大(键,值)对:
>>> max({k:sum(v)/float(len(v)) for k, v in d.items()}.items(), key=lambda x:x[1])
('4694202700270003', -54.0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.