gpt4 book ai didi

python - 将三维 ndarray reshape 为二维

转载 作者:行者123 更新时间:2023-11-30 22:06:25 30 4
gpt4 key购买 nike

我有一个三维数组(形状为2,2,3),可以将其视为两个二维数组的组合。我想获取这两个数组并将它们并排放置。这是我的出发点:

test1 = np.ndarray((2,2,3))
test1[0] = np.array([[1,2,3],
[4,5,6]])
test1[1] = np.array([[7,8,9],
[10,11,12]])

我可以通过迭代第一个维度来获得所需的结果,如下所示:

output = np.ndarray((2,6))
for n_port, port in enumerate(test1):
output[:,n_port*3:(n_port+1)*3] = port

给出:

array([[ 1.,  2.,  3.,  7.,  8.,  9.],
[ 4., 5., 6., 10., 11., 12.]])

但我想知道是否有更灵活的方法来做到这一点。 reshape 功能将是显而易见的方法,但它将它们展平,而不是并排堆叠它们:

test1.reshape((2,6))
array([[ 1., 2., 3., 4., 5., 6.],
[ 7., 8., 9., 10., 11., 12.]])

非常感谢您的帮助!

最佳答案

基于线程中描述的回溯思想:intuition and idea behind reshaping 4D array to 2D array in numpy ,您可以使用 arr.transposearr.reshape 的组合,如下所示:

In [162]: dd = np.arange(1, 13).reshape(2, 2, 3)

In [163]: dd
Out[163]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],

[[ 7, 8, 9],
[10, 11, 12]]])

In [164]: dd.transpose((1, 0, 2))
Out[164]:
array([[[ 1, 2, 3],
[ 7, 8, 9]],

[[ 4, 5, 6],
[10, 11, 12]]])

In [165]: dd.transpose((1, 0, 2)).reshape(2, -1)
Out[165]:
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])

关于python - 将三维 ndarray reshape 为二维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731257/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com