numpy 中反转数组最内部值的最简单方法是什么:
array([[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]],
[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]]])
这样我得到以下结果:
array([[[2, 1, 1, 1],
[3, 2, 2, 2],
[4, 3, 3, 3]],
[[2, 1, 1, 1],
[3, 2, 2, 2],
[4, 3, 3, 3]]])
非常感谢!
怎么样:
import numpy as np
a = np.array([[[10, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]],
[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]]])
最后一个维度的逆向是:
b = a[:,:,::-1]
或
b = a[...,::-1]
尽管我不太喜欢后者,因为前两个维度是隐式的,而且更难看出正在发生的事情。
对于每个内部数组,您可以使用 fliplr。 它沿左/右方向翻转每行中的条目。列被保留,但显示顺序与以前不同。
使用示例:
import numpy as np
initial_array = np.array([[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]],
[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]]])
index=0
initial_shape = initial_array.shape
reversed=np.empty(shape=initial_shape)
for inner_array in initial_array:
reversed[index] = np.fliplr(inner_array)
index += 1
打印反转
输出:
array([[[2, 1, 1, 1],
[3, 2, 2, 2],
[4, 3, 3, 3]],
[[2, 1, 1, 1],
[3, 2, 2, 2],
[4, 3, 3, 3]]])
确保 Fliplr 函数的输入数组必须至少是二维的。
此外,如果你想上下翻转数组。您还可以使用flipud
您可以使用
numpy.flip()
轻松完成此操作:
import numpy as np
a = np.array([[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]],
[[1, 1, 1, 2],
[2, 2, 2, 3],
[3, 3, 3, 4]]])
print(np.flip(a, axis=2))
这给出了:
array([[[2, 1, 1, 1],
[3, 2, 2, 2],
[4, 3, 3, 3]],
[[2, 1, 1, 1],
[3, 2, 2, 2],
[4, 3, 3, 3]]])
根据需要。由于额外的方括号,输入数组是三维的。因此,沿着
axis=2
翻转不会执行任何操作,意味着翻转第三个轴(因为计数从 0 开始)。
请注意,这将返回一个视图,而不是副本(请参阅docs)。