繁体   English   中英

平均列2D数组python

[英]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.defaultdictmax

>>> 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM