【发布时间】:2019-07-31 01:03:41
【问题描述】:
我有一个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.]]])
【问题讨论】:
-
arr.transpose(1,0,2)可能会做你想做的事。 -
哇@hpaulj 你能解释一下它是如何工作的吗?医生说
For an n-D array, if axes are given, their order indicates how the axes are permuted,但不清楚这是什么意思 -
2,1,0是一个完整的转置,0,1,2不会改变任何东西。1,0,2切换前 2 个等。
标签: python arrays numpy tensor