Python错误:ValueError:使用序列

时间:2015-07-26 15:11:42

标签: python numpy

我正在做一些图像检测。检测算法有一行代码导致错误。

代码行:

im_rois = im_rois.astype(np.float, copy=False)

错误是:

Error: ValueError: setting an array element with a sequence.

我打印了im_rois的内容。他们是:

[[ array([[  56.04,   57.32,  317.16,  285.16],
       [ 125.16,   17.64,  332.52,  285.16],
       [   1.  ,    1.  ,  427.24,  639.72],
       ..., 
       [ 201.96,    1.  ,  248.04,   50.92],
       [ 286.44,    1.  ,  350.44,   47.08],
       [ 304.36,  244.2 ,  338.92,  349.16]])]]

好奇,如果有人能指出我的方向。

1 个答案:

答案 0 :(得分:2)

我可以使用以下序列重现您的错误:

In [1317]: im=[[np.array([[1,2,3]])]]  # list containing array    

im.astype(float)会产生AttributeError: 'list' object has no attribute 'astype',因为它是一个列表,而不是一个数组。

但是我可以将它嵌入到一个对象数组中:

In [1318]: x=np.empty((1,),dtype=object)
In [1319]: x[0]=im    
In [1320]: x
Out[1320]: array([[[array([[1, 2, 3]])]]], dtype=object)

print看起来像你的;请注意内部列表中的逗号。

In [1321]: print(x)
[[[array([[1, 2, 3]])]]]

如果它是一个ndim数组,那么打印就没有逗号。

In [1325]: print(np.array([[[1,2,3]]]))
[[[1 2 3]]]

现在当我尝试astype时,我得到了你的价值错误。

In [1322]: x.astype(np.float)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-1322-1bc194707569> in <module>()
----> 1 x.astype(np.float)

ValueError: setting an array element with a sequence.

但不知道如何创建im_rois我无法建议避免这种情况的方法。如果im_rois

array([[  56.04,   57.32,  317.16,  285.16],
       [ 125.16,   17.64,  332.52,  285.16],
       [   1.  ,    1.  ,  427.24,  639.72],
       ...]])

它不会给出这个错误。

我会检查以确保您正在为此包提供正确的输入,无论是列表,数组还是标量。

vstack能够删除此中间“对象”图层,允许astype

In [1343]: np.vstack(x)
Out[1343]: array([[[[1, 2, 3]]]])