如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中

Posted

技术标签:

【中文标题】如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中【英文标题】:How to compare multiple arrays from dictionary values, and map per array element the dictionary key into new array/list 【发布时间】:2021-10-09 18:36:27 【问题描述】:

我想比较在字典值中定义的多个数组。我想比较所有数组中的每个元素以找到该元素的最小值。对应于最低元素的数组的键应该映射到一个新的数组(或列表)中,如下所示:

img_dictionary = 0: np.array([[935, 925, 271, 770, 869, 293],
                               [125, 385, 291, 677, 770, 770]], dtype=uint64),
                  1: np.array([[ 12,  92,  28, 942, 124, 882],
                               [241, 853, 292, 532, 834, 231]], dtype=uint64),
                  2: np.array([[934, 633, 902, 912, 922, 812],
                               [152, 293, 284, 634, 823, 326]], dtype=uint64),
                  3: np.array([[362,  11, 292,  48,  92, 481],
                               [196, 294, 446, 591,  92, 591]], dtype=uint64)

预期结果

(array([[1, 3, 1, 3, 3, 0],
        [0, 2, 2, 1, 3, 1]], dtype=uint64),)

我尝试过使用np.minimum() 和类似的函数,但这些不允许比较多个数组。

【问题讨论】:

Ivan,您将我的 np.array 和 np.dtype 分别编辑为 array 和 dtype,但是如果我在没有定义 np.它指出 NameError: name 'array' is not defined, dtype NameError: name 'uint64' is not defined.. 抱歉,本来应该是np.array。如果您使用 from numpy import * 导入 NumPy,它将作为 array 工作... 【参考方案1】:

假设字典中的每个条目具有相同数量的元素,那么您可以将数据作为一个数组处理。这可以通过使用np.stack 堆叠数组来完成:

>>> arr = np.stack(list(img_dictionary.values()))
array([[[935, 925, 271, 770, 869, 293],
        [125, 385, 291, 677, 770, 770]],

       [[ 12,  92,  28, 942, 124, 882],
        [241, 853, 292, 532, 834, 231]],

       [[934, 633, 902, 912, 922, 812],
        [152, 293, 284, 634, 823, 326]],

       [[362,  11, 292,  48,  92, 481],
        [196, 294, 446, 591,  92, 591]]], dtype=uint64)

然后,你可以申请np.argmin

>>> arr.argmin(axis=0)
array([[1, 3, 1, 3, 3, 0],
       [0, 2, 2, 1, 3, 1]])

【讨论】:

谢谢,请将 arr 添加到 np,argmin(axis=0) --> np.argmin(arr, axis=0)

以上是关于如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中的主要内容,如果未能解决你的问题,请参考以下文章

swift:安全访问 SCNNode 数组的字典

go——字典

阅读 plist 字典

从字典数组中获取元素并将键保存为字符串,将值保存为字符串

将字典中的数组转换为数组列表

如何解析字典中的数组内的字典