我有一个 before_arr
(2 x 3 x 4) 多维数组。我想将其转换为具有特定排列模式的 new_arr
(3 x 2 x 4),如下所示。
import numpy as np
before_arr = np.array([
[
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
],
[
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
],
], dtype=float)
# what I want
new_arr = np.array([
[
[0, 0, 0, 0],
[1, 1, 1, 1],
],
[
[0, 0, 0, 0],
[1, 1, 1, 1],
],
[
[0, 0, 0, 0],
[1, 1, 1, 1],
],
], dtype=float)
before_arr.reshape(3, 2, 4)
没有给我我想要的。
In [74]: before_arr.reshape(3, 2, 4)
Out[74]:
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
最佳答案
使用zip
匹配相应的行。
试试这个:
import numpy as np
before_arr = np.array([
[
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
],
[
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
],
], dtype=float)
new_arr = np.array([*zip(*before_arr)])
print(new_arr)
输出:
[[[0. 0. 0. 0.]
[1. 1. 1. 1.]]
[[0. 0. 0. 0.]
[1. 1. 1. 1.]]
[[0. 0. 0. 0.]
[1. 1. 1. 1.]]]
关于python - 如何将多维数组从一种特定排列 reshape 为另一种排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57281829/