【发布时间】:2014-04-30 07:09:07
【问题描述】:
所以我在试验 numpy 并且在 rollaxis 方法中遇到了一个奇怪的 (?) 行为。
In [81]: a = np.ones((4, 3, 2))
In [82]: a.shape
Out[82]: (4, 3, 2)
In [83]: x = np.rollaxis(a, 2)
In [84]: x.shape
Out[84]: (2, 4, 3)
In [85]: np.rollaxis(x, -2).shape
Out[85]: (4, 2, 3)
-2 不应该反转滚动轴吗?我想要做的是应用一个只能在 2 坐标是第一个时应用的矩阵。但后来我想把我的数组放回原来的形式。我发现唯一有效的方法是两次应用np.rollaxis(x, 2),或应用np.rollaxis(x, 0, start=3)。我只是通过猜测找到了这些,我不知道它们为什么起作用。他们似乎也掩盖了我真正想做的事情。有人可以解释一下我应该“反转”一卷的方式,或者我做错了什么吗?
(有pythonic的方法吗?)
【问题讨论】:
-
了解
np.rollaxis的工作原理可能很有见地,但让我告诉你——最好忘记它并立即学习np.moveaxis(这个更好的版本)。例如:np.moveaxis(a, 0, 3)将第一个维度移动到第四个维度。这相当于np.rollaxis(a, 0, 4)。反向操作是 - 相应地:np.moveaxis(a, 3, 0)和np.rollaxis(a, 3)。np.moveaxis可以一次更改多个维度。