如何反转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
asrange(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)