Python错误:ValueError:使用sequen设置数组元素

2024-04-19 00:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

代码行:

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

错误是:

^{pr2}$

我打印了im muu 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]])]]

我很好奇是否有人能给我指点方向。在


Tags: 代码图像算法false内容错误npfloat
1条回答
网友
1楼 · 发布于 2024-04-19 00:13:46

我可以用这个序列重现你的错误:

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

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

但我可以把它嵌入一个对象数组中:

^{pr2}$

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]]]])

相关问题 更多 >