【问题标题】:Python dictionary to NumPy conversionPython 字典到 NumPy 的转换
【发布时间】:2019-07-18 08:25:21
【问题描述】:

我正在将 Python 字典转换为 NumPy 数组。

import numpy as np

myDict = {
        1: "AAA",
        2: "BBB",
        3: "CCC",
        4: "AAA",
        5: "BBB"
        }

myNumPyArray = np.asarray(myDict, dtype=dict, order="C")

print(myNumPyArray) 

输出

{1: 'AAA', 2: 'BBB', 3: 'CCC', 4: 'AAA', 5: 'BBB'}

为什么会在输出中显示字典?

【问题讨论】:

  • 你可以改用myNumPyArray = np.array(list(myDict.items()))
  • 尝试打印repr(myNumPyArray)
  • 问题是,它是一个字典数组。 Numpy 无法知道您希望如何推断 dict,请查看 docs。在调用 numpy 数组之前,在字典上使用 .items.().values()
  • 你期望什么输出? The manual says 第一个参数应该传递“列表、元组列表、元组、元组元组、列表元组和 ndarrays”。

标签: python numpy dictionary


【解决方案1】:

这“失败”是因为创建了一个包含“object”类型的单个标量值的数组。这个标量值将是一个指向字典的指针。如果要将字典的 content 转换为 ndarray,则可以使用具有 2 个字段的结构化数组。一个用于整数索引,另一个用于作为固定长度字符串的值。使用 np.fromiter 是一种快速的方法,因为它可以避免创建任何临时对象。

np.fromiter(myDict.items(), dtype='i4,U3', count=len(myDict))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    相关资源
    最近更新 更多