我的数据是三维的,但只有第三个轴有已知的维度,我需要将其转换为二维数组。在
示例:
input =
[[[1, 2, 3]],
[[4, 5, 6],
[7, 8, 9]],
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]]
input_reshaped =
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
所以我有一个三维数据,其中第一个和第二个维度在我的数据集中是可变的,第三个维度是常量,而且是已知的。在
输入中的每个块也是numpy数组。我知道我可以用纽比.vstack在第一维度上迭代。但如果可能的话,我想用Python式的方式来重塑我的数据,而不需要明确地迭代我的数据。在
我已经尝试过执行一个列表比较,以获得每个块的第一个形状,然后求和这些值并将其与整形一起使用。像这样:
^{pr2}$但是对于前面示例中的输入,我得到以下错误:
ValueError: cannot reshape array of size 3 into shape (6,3)
因为Python看到输入有一个numy.array带形状(3,)
有什么想法吗?在
附加:如果可能的话,在上述条件下进行反向转换将是非常棒的!在
按照评论中的建议,}:
vstack
或{尝试从列表生成数组只会创建一个1d列表数组。帮不了多少忙。
^{pr2}$reshape
不起作用。在但是
concatenate
使用数组列表(或类似数组的对象):concatenate
也将与Out[322]
一起工作,因为它将其输入视为一个列表,即使它是一个数组。在vstack
是同一件事,只是它确保子数组都是2d的,在本例中它们已经是2d了。在相关问题 更多 >
编程相关推荐