如何反转numpy.roll?

如何反转numpy.roll?,numpy,Numpy,我有一个for循环,它反复调用roll,我想反转所创建数组的顺序 我想我忽略了一些琐碎的方法,但到目前为止,我只找到了3-5种不去做的方法 [1]中的:来自numpy导入卷 [2]中:c=范围(5) ##我要反转的代码 [3]中:对于范围内的i(len(c)): …:c=滚动(c,1) …:打印c [4 0 1 2 3] [3 4 0 1 2] [2 3 4 0 1] [1 2 3 4 0] [0 1 2 3 4] ##我想要的结果 [0 1 2 3 4] [1 2 3 4 0] [2

我有一个
for循环
,它反复调用
roll
,我想反转所创建数组的顺序

我想我忽略了一些琐碎的方法,但到目前为止,我只找到了3-5种不去做的方法

[1]中的
:来自numpy导入卷
[2]中:c=范围(5)
##我要反转的代码
[3]中:对于范围内的i(len(c)):
…:c=滚动(c,1)
…:打印c
[4 0 1 2 3]
[3 4 0 1 2]
[2 3 4 0 1]
[1 2 3 4 0]
[0 1 2 3 4]    
##我想要的结果
[0 1 2 3 4]
[1 2 3 4 0]
[2 3 4 0 1]
[3 4 0 1 2]    
[4 0 1 2 3]    
##我所尝试的:
[4]中:对于范围内的i(len(c)):
…:c=滚动(c,-1)
…:打印c
[1 2 3 4 0]
[2 3 4 0 1]#怎么样

for i in range(len(c)):
    print c
    c = roll(c, len(c) - 1)

[0 1 2 3 4]
[1 2 3 4 0]
[2 3 4 0 1]
[3 4 0 1 2]
[4 0 1 2 3]
一路滚动所有内容(除了一个),并在第一卷之前进行打印(因此第一行的
c
as
range(5)

甚至你的第一个解决方案,如果你先打印c

for i in range(len(c)):
    print c
    c = roll(c, -1)

[0 1 2 3 4]
[1 2 3 4 0]
[2 3 4 0 1]
[3 4 0 1 2]
[4 0 1 2 3]

Fwiw,一个不同的问题:相反,我发现只有这个,使用 :

import numpy as np

a = np.ones((3,4,5,6))
print a.shape

for ax in range( a.ndim ):
    print "ax %d:" % ax ,
    jtrans = np.arange( a.ndim )
    jtrans[0], jtrans[ax] = jtrans[ax], jtrans[0]
    b = a.transpose( jtrans )
    print b.shape, jtrans ,
    a = b.transpose( jtrans )  # and back
    print a.shape

# (3, 4, 5, 6)
# ax 0: (3, 4, 5, 6) [0 1 2 3] (3, 4, 5, 6)
# ax 1: (4, 3, 5, 6) [1 0 2 3] (3, 4, 5, 6)
# ax 2: (5, 4, 3, 6) [2 1 0 3] (3, 4, 5, 6)
# ax 3: (6, 4, 5, 3) [3 1 2 0] (3, 4, 5, 6)