我有一个如下所示的列表:
[array(46), array(0.09), array(5.3), array(4), array(23), array(33), array([0, 1])]
当我尝试保存它时,如下:
np.save('model.npy', data)
我收到以下错误:
ValueError: setting an array element with a sequence.
导致错误的原因是什么?是array([0, 1]
吗?或者关于如何格式化列表的事情。
感谢。
答案 0 :(得分:1)
np.save
保存数组,而不是列表。所以它必须先将列表转换为数组。但是当我这样做时:
In [192]: array=np.array
In [193]: data = np.array([array(797.41993), array(0.5880978458210907), array(0.606072
...: 7759272153), array(0.590397955349836), array(0.5688937568615196), array(0.56
...: 70561030951616), array([0, 1])])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-193-390218c41b83> in <module>()
----> 1 data = np.array([array(797.41993), array(0.5880978458210907), array(0.6060727759272153), array(0.590397955349836), array(0.5688937568615196), array(0.5670561030951616), array([0, 1])])
ValueError: setting an array element with a sequence.
所有子数组都有单个项目,但是最后一个有2.如果我删除它,它可以创建一个数组。
In [194]: data = np.array([array(797.41993), array(0.5880978458210907), array(0.606072
...: 7759272153), array(0.590397955349836), array(0.5688937568615196), array(0.56
...: 70561030951616)])
In [195]: data
Out[195]:
array([ 7.97419930e+02, 5.88097846e-01, 6.06072776e-01,
5.90397955e-01, 5.68893757e-01, 5.67056103e-01])
np.array(...)
尝试创建尽可能高的维数组。如果元素的大小不同,则无法做到这一点。在某些情况下,它将创建一个对象dtype数组。但在这方面它引发了一个错误。
首先使用1d项创建对象dtype:
In [196]: data = np.array([array([0, 1]), array(797.41993), array(0.5880978458210907),
...: array(0.6060727759272153), array(0.590397955349836), array(0.56889375686151
...: 96), array(0.5670561030951616)])
In [197]: data
Out[197]:
array([array([0, 1]), array(797.41993), array(0.5880978458210907),
array(0.6060727759272153), array(0.590397955349836),
array(0.5688937568615196), array(0.5670561030951616)], dtype=object)
或者hstack
为@wim建议:
In [198]: data = np.hstack([array(797.41993), array(0.5880978458210907), array(0.60607
...: 27759272153), array(0.590397955349836), array(0.5688937568615196), array(0.5
...: 670561030951616), array([0, 1])])
In [199]: data
Out[199]:
array([ 7.97419930e+02, 5.88097846e-01, 6.06072776e-01,
5.90397955e-01, 5.68893757e-01, 5.67056103e-01,
0.00000000e+00, 1.00000000e+00])
答案 1 :(得分:0)
ValueError: setting an array element with a sequence
我能找到的这个错误的最佳解释是here
如果我们尝试将某些内容写入
setting an array element with a sequence
的单个地点(array
单元格,matrix
条目)并且此内容为,则会发生错误array
不是标量值。
发生这种情况
numpy
中的任何内容)在这种情况下,np.save
仅适用于单个数组,因此首先在输入中应用asanyarray()
。这可以看到七个&#34;事物的列表。其中第一个是float
,并试图将它们装入arr.shape = (7,), arr.dtype = float
数组。当它到达最后一个元素时,它会尝试设置arr[6] = array([0, 1])
并抛出错误。