当前位置: 首页 > 知识库问答 >
问题:

python - numpy.load 获取 None 值会报错如何解决?

伍嘉
2023-04-27
import numpy

limit = None

numpy.savez_compressed(
    '123.npz',
    limit=limit
)


d = numpy.load('123.npz')
limit = d.get('limit', None)

运行后报错

Traceback (most recent call last):
  File "/Users/ponponon/Desktop/code/me/ideaboom/main.py", line 12, in <module>
    limit = d.get('limit', None)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/_collections_abc.py", line 824, in get
    return self[key]
  File "/Users/ponponon/.local/share/virtualenvs/ideaboom-B0dr_aXc/lib/python3.10/site-packages/numpy/lib/npyio.py", line 253, in __getitem__
    return format.read_array(bytes,
  File "/Users/ponponon/.local/share/virtualenvs/ideaboom-B0dr_aXc/lib/python3.10/site-packages/numpy/lib/format.py", line 787, in read_array
    raise ValueError("Object arrays cannot be loaded when "
ValueError: Object arrays cannot be loaded when allow_pickle=False

共有1个答案

关苗宣
2023-04-27

解决了

这个错误提示是因为在调用 numpy.load() 函数时没有设置 allow_pickle=True 参数,而默认情况下 allow_pickle=False,这意味着 numpy.load() 函数不能加载包含 Python 对象(例如 None)的数组。为了解决这个问题,您需要将 allow_pickle=True 作为参数传递给 numpy.load() 函数,如下所示:

import numpy

limit = None

numpy.savez_compressed(
    '123.npz',
    limit=limit
)

d = numpy.load('123.npz', allow_pickle=True) # 添加 allow_pickle=True 参数
limit = d.get('limit', None)

在这个示例中,我们在调用 numpy.load() 函数时添加了 allow_pickle=True 参数,以允许加载包含 Python 对象的数组。这样,您就可以成功加载 limit 变量的值了。


Q:numpy.load 的 allow_pickle 参数是干嘛的?

A:allow_pickle 参数是 numpy.load() 函数的一个可选参数,用于指示是否允许加载包含 Python 对象的数组。默认情况下,allow_pickle 参数的值为 False,这意味着 numpy.load() 函数不能加载包含 Python 对象的数组。如果您的数组中包含 Python 对象(如 Python 内置类型 listdict,或自定义对象),则需要将 allow_pickle 参数设置为 True

allow_pickle=True 时,numpy.load() 函数会允许加载包含 Python 对象的数组。这将导致 numpy.load() 函数更加灵活,但也会带来一些潜在的风险,因为加载任意 Python 对象可能会导致恶意代码的执行。因此,建议只在需要加载包含 Python 对象的数组时使用 allow_pickle=True

在使用 allow_pickle=True 时,您需要确保只加载来自可信来源的数据,以避免潜在的安全问题。

 类似资料:
  • 在 Python 中,有一个特殊的常量 None(N 必须大写)。和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。 这里的空值并不代表空对象,即 None 和 []、“” 不同: >>> None is [] False >>> None is "" False None 有自己的数据类型,我们可以在 IDLE 中使用 type() 函数查看它的类型,执行代码如下:

  • 本文向大家介绍mysql 报错This function has none of DETERMINISTIC解决方案,包括了mysql 报错This function has none of DETERMINISTIC解决方案的使用技巧和注意事项,需要的朋友参考一下 本文章向朋友们介绍开启bin-log日志mysql报错:This function has none of DETERMINISTI

  • Oracle存储过程代码如下: python调用代码如下: 执行python报错信息: DatabaseError: (cx_Oracle.DatabaseError) ORA-00936: missing expression 咨询了GPT给了如下的代码: 结果报错: AttributeError: 'function' object has no attribute 'Parameter' 所

  • 问题内容: 如何获取字符的ASCII值 问题答案: 函数将获得的值。而且,如果你想在玩完数字后再转换回去,可以使用函数来解决。 在Python 2中,还有一个unichr函数,返回其序数为参数的字符: 在Python 3中,你可以使用代替。

  • git拉取代码报如下错误,什么原因导致得啊 Auto packing the repository in background for optimum performance. See “git help gc” for manual housekeeping. Unlink of file '.git/objects/pack' failed. Should I try again? (y/n)