You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除字典中numpy数组的dtype=int64标识并保留数组结构?

解决numpy数组在字典中显示dtype的问题

你遇到的问题是numpy数组的默认字符串表示会包含dtype=int64标识,而你希望保留数组的numpy类型,仅隐藏这个标识。以下是几种可行的解决方案:

方案1:修改numpy全局打印选项

通过numpy.set_printoptions自定义数组的显示格式,让所有numpy数组打印时不再显示dtype:

import numpy as np

# 配置numpy打印格式,自定义数组的显示文本
np.set_printoptions(formatter={'array': lambda arr: f"array({arr.tolist()})"})

rng = np.random.default_rng()
emptydictionary = {}

element2 = rng.integers(1, 10, size=50)
element1 = 5

def function(element1, element2):
    emptydictionary.update({element1: element2})
    return emptydictionary

result = function(element1, element2)
print(result)
# 验证数组类型仍为numpy.ndarray
print(type(result[5]))  # 输出 <class 'numpy.ndarray'>

方案2:自定义字典打印函数

如果不想修改全局设置,可以编写专门的打印函数,仅处理目标字典中的数组:

import numpy as np

rng = np.random.default_rng()
emptydictionary = {}

element2 = rng.integers(1, 10, size=50)
element1 = 5

def function(element1, element2):
    emptydictionary.update({element1: element2})
    return emptydictionary

def print_dict_clean(d):
    items = []
    for key, val in d.items():
        if isinstance(val, np.ndarray):
            # 将数组转为不含dtype的字符串格式
            val_str = f"array({val.tolist()})"
        else:
            val_str = repr(val)
        items.append(f"{repr(key)}: {val_str}")
    print("{" + ", ".join(items) + "}")

result = function(element1, element2)
print_dict_clean(result)
# 验证数组类型
print(isinstance(result[5], np.ndarray))  # 输出 True

方案3:自定义numpy数组子类

创建一个继承自np.ndarray的子类,重写__repr__方法来隐藏dtype:

import numpy as np

class NoDtypeArray(np.ndarray):
    def __repr__(self):
        return f"array({self.tolist()})"

rng = np.random.default_rng()
emptydictionary = {}

# 将生成的数组转换为自定义子类
element2 = rng.integers(1, 10, size=50).view(NoDtypeArray)
element1 = 5

def function(element1, element2):
    emptydictionary.update({element1: element2})
    return emptydictionary

result = function(element1, element2)
print(result)
# 验证仍为numpy数组类型
print(isinstance(result[5], np.ndarray))  # 输出 True

各方案特点

  • 方案1:全局生效,适合整个项目需要统一隐藏dtype的场景。
  • 方案2:仅影响目标字典的打印,不改变其他数组的显示,灵活性强。
  • 方案3:自定义数组类型,适合需要长期使用无dtype显示格式的数组。

所有方案都保留了数组的numpy类型及相关特性,只是修改了显示效果。

内容的提问来源于stack exchange,提问作者hanindul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:31:05