提问人:Oleksandr Nekrashevych 提问时间:11/2/2023 最后编辑:mkrieger1Oleksandr Nekrashevych 更新时间:11/2/2023 访问量:89
np.array() 给出错误:2 维后形状不均匀。检测的形状为(31,3)+不均匀部分
np.array() gives error: inhomogeneous shape after 2 dimensions. The detected shape was (31, 3) + inhomogeneous part
问:
我遇到了一个错误,我无法修复。
finBlackSourceMoves = np.array(finBlackSourceMoves)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (31, 3) + inhomogeneous part.
我正在尝试将以下列表更改为numpy数组:
[[11, 27, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [2, 38, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [38, 45, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [12, 20, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [5, 33, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [1, 11, [[2, 3, 4, 5, 6, 4, 3,
2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [33, 24, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [24, 17, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [8, 16, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [10, 18, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [6, 21, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [27, 36, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [21, 36, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [13, 21, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [15, 23, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [17, 10, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [10, 37, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [3, 12, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0,
0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [4, 3, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [3, 12, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [7, 4, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0,
0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [0, 4, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [12, 13, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0,
0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [13, 4, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [4, 13, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [14, 22, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [21, 29, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7,
7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [23, 31, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7,
7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [13, 14, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7,
7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]], [14, 21, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7,
7], [8, 9, 10, 11, 12, 10, 9, 8]]], [22, 30, [[2, 3, 4, 5, 6, 4, 3, 2], [1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 7, 7, 7, 7], [8, 9, 10, 11, 12, 10, 9, 8]]]]
但它抛出了上面的错误,声称它有一个不均匀的部分或形状,但我确信我正在发送大小一致的子数组,即两个整数和一个 8x8 的 2d 整数数组。
所以 [integer, integer, [8][8]integer]。
是什么原因导致的?
答:
0赞
hpaulj
11/2/2023
#1
复制粘贴并分配给:x
In [277]: len(x)
Out[277]: 31
In [278]: x[0]
Out[278]:
[11,
27,
[[2, 3, 4, 5, 6, 4, 3, 2],
[1, 1, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[7, 7, 7, 7, 7, 7, 7, 7],
[8, 9, 10, 11, 12, 10, 9, 8]]]
将整数收集到一个列表和数组中:
In [279]: data1=[i[:2] for i in x]
In [281]: np.array(data1).shape
Out[281]: (31, 2)
8x8 部分相同:
In [283]: data2=[i[2] for i in x]
In [284]: np.array(data2).shape
Out[284]: (31, 8, 8)
评论
0赞
Oleksandr Nekrashevych
11/2/2023
非常感谢!我真的很感激:D。但是由于您之前的评论,我才弄清楚了,我不完全理解在这种情况下形状的含义,并且要使数组“同质”,元素需要具有相同的数据类型和相同的结构/形状,所以我最终只是展平了 8x8,然后只是附加了前两个整数,它起作用了。
0赞
hpaulj
11/2/2023
对于此类问题,错误消息一直在演变。最初只是被打赌,并在可以制作普通数组时制作了一个 dtype 数组。然后它开始警告您需要指定 dtype。现在它提出了这个“异构”错误,我同意这没有帮助。但是有很多带有该消息的 SO 示例,都说您正在尝试从格式不佳的数据中制作数组。np.array
object
object
评论