尝试保存 .npy (numpy) 文件时出错
Posted
技术标签:
【中文标题】尝试保存 .npy (numpy) 文件时出错【英文标题】:Error while trying to save .npy (numpy) file 【发布时间】:2020-10-22 00:43:30 【问题描述】:c:\python38\lib\site-packages\numpy\core_asarray.py:136: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences(这是一个列表或元组的列表或元组或 ndarrays不推荐使用不同的长度或形状)。如果您打算这样做,则必须在创建 ndarray 时指定 'dtype=object' 返回数组(a, dtype, copy=False, order=order, subok=True)
我在 *** 中遇到了一些问题,因此尝试为此升级 scipy,但它显示另一个错误:
错误:tensorflow 2.2.0 有要求 scipy==1.4.1; python_version >= "3",但您将拥有不兼容的 scipy 1.5.0。
有人能说出为什么会这样吗?
【问题讨论】:
您必须告诉我们您要保存的内容。此外,您似乎在这里同时将两个问题混为一谈:一个似乎是 NumPy 抱怨您要保存到 npy 文件的内容。另一个似乎是您想要升级 SciPy,并且在这样做时遇到了依赖性问题。后者不在 SO 的范围内,可能更适合像超级用户这样的站点。对于前者,您必须显示一些代码。 这是一个警告,而不是错误。它由numpy
1.19 版制作,我认为它仍在dev
中。你现在到底想做什么?节省什么?以及如何?
【参考方案1】:
在 numpy 1.19dev 中,尝试从不规则的列表或数组列表创建数组开始显示此警告。开发人员正在尝试解决一个已经存在了一段时间的问题。 np.save
保存数组,所以如果给定一个列表,它首先把它变成一个数组:
In [227]: np.save('test.npy', [[1,2,3],[4,5]])
/usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py:136: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
return array(a, dtype, copy=False, order=order, subok=True)
加载这样的数组也会产生错误:
In [228]: np.load('test.npy')
---------------------------------------------------------------------------
ValueError: Object arrays cannot be loaded when allow_pickle=False
In [229]: np.load('test.npy', allow_pickle=True)
Out[229]: array([list([1, 2, 3]), list([4, 5])], dtype=object)
【讨论】:
以上是关于尝试保存 .npy (numpy) 文件时出错的主要内容,如果未能解决你的问题,请参考以下文章