从集合中获取数组orderdict获取最大键值

时间:2017-04-06 13:35:40

标签: python arrays numpy

d = collections.OrderedDict()
d
{'A': array([[ 29.503],
       [ 31.829],
       [ 13.078],
       ..., 
       [ 43.227],
       [ 53.028],
       [ 43.928]]), 
'B': array([[  28.738],
       [  68.151],
       [  49.02 ],
       ..., 
       [ 296.73 ],
       [ 107.052],
       [  87.845]]), 
'C': array([[ 11.288],
       [ 31.343],
       [ 71.269],
       ..., 
       [ 92.106],
       [ 34.668],
       [ 41.614]])}

如果我想获得数组A [0],B [0]&的每个值的最大值。 C [0],然后A [1],B [1]& C [1],......等。并返回一个数组[A,B,C ...,B]等。

然后使用y = max(d.iterkeys(), key=lambda k: d[k])

然后它说,

  

ValueError:具有多个元素的数组的真值   暧昧。使用a.any()或a.all()

所以我想寻求帮助,如果我能得到一个阵列[A,B,C ......,B]等?

谢谢

2 个答案:

答案 0 :(得分:2)

这样的事情:

grails clean
grails clean --refresh-dependencies
grails compile

答案 1 :(得分:1)

我建议你不要将numpy与非numpy混在一起。你在寻找的是:

from numpy import array,concatenate

//DEFINE MATRICES HERE, DONT NEED DICT - I use 'd' for the example, you don\'t need it.

mapping = array(['A','B','C'])
print mapping[concatenate((d['A'],d['B'],d['C']),axis=1).argmax(axis=1)]

说明:

我拿了你的列数组,将它们粘贴到一个矩阵,其中每一行都是你想要测试的表格的A B C,然后argmax得到列索引,其中找到了最大值。使用'mapping'我将数字索引转换为字母。尝试打印而不理解。