我正在尝试根据其值对字典键进行排序。所以我用numpy的argsort
来按升序对值进行排序。但是,当我尝试根据值索引对键进行排序时,我得到以下错误:使用索引对数组进行排序会导致索引太多
IndexError: too many indices for array
我在做什么错在这里?
import numpy as np
## Map occurences of colours in image
colour_map = {}
#...
colour_map['#fff'] = 15
colour_map['#ccc'] = 99
#...
## Sort colour map from most frequent to least
colours = np.array(colour_map.keys()) # dict_keys(['#fff', '#ccc'])
col_frequencies = np.array(colour_map.values()) # dict_values([15, 99])
indicies = col_frequencies.argsort()
# Error on below line "IndexError: too many indices for array"
colours = colours[indicies[::-1]]
当你调用'.keys()'和'values()'numpy doe不会将它们转换为char或整数数组,而是对象数组。 'colours = np.array(list(colour_map.keys()))''后跟'col_frequencies = np.array(list(colour_map.values()))'应该解决这个问题。 – ayhan
@ayhan谢谢修复它。如果你做出答案,我可以接受它。 –
你的代码可以在'Python 2.7.12'上使用'Numpy 1.13.0'。 – carthurs