Den*_*isH 6 python numpy multidimensional-array
假设我有一个数组
>>> a
[[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]]
Run Code Online (Sandbox Code Playgroud)
我想翻转一个轴来结束
>>> aflipped
[[[2, 1, 0], [5, 4, 3], [8, 7, 6]], [[12, 11, 10], [15, 14, 13], [18, 17, 16]]]
Run Code Online (Sandbox Code Playgroud)
我想用某种方式做到这一点
>>> aflipped=a[::-1][::1][::1]
Run Code Online (Sandbox Code Playgroud)
要么
>>>> aflipped=flipud(a)
Run Code Online (Sandbox Code Playgroud)
记法,因为我知道这是非常快和(重要)内存使用率低.我的代码最终已经交换,for循环根本不是理想的.
实际上这是一个4D阵列,我只想翻转一个轴,但似乎我的选项仅限于前两个轴.有记忆效率的方法吗?
Ash*_*ary 12
像这样的东西:
>>> a = np.array([[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]])
>>> a[:,:,::-1] #or a[..., ::-1]
array([[[ 2, 1, 0],
[ 5, 4, 3],
[ 8, 7, 6]],
[[12, 11, 10],
[15, 14, 13],
[18, 17, 16]]])
Run Code Online (Sandbox Code Playgroud)
时间比较:
>>> %timeit a[:,:,::-1]
1000000 loops, best of 3: 1.53 µs per loop
>>> %timeit a[..., ::-1]
1000000 loops, best of 3: 1.06 µs per loop
Run Code Online (Sandbox Code Playgroud)