我有这样的数据:
[[[1, 2, 3]
[4, 5, 6]]
[[7, 8, 9]
[0, 1, 2]]]
我需要把它变成这个“形状”:
[[[1, 4], [2, 5], [3, 6]]
[[7, 0], [8, 1], [9, 2]]]
到目前为止,我拥有的最好的方法是:
for i in range(2):
pairs = tuple(
array[i, :, j] for j in range(3) # ---axis-2-length---
)
print(pairs)
生产:
([1, 4], [2, 5], [3, 6])
([7, 0], [8, 1], [9, 2])
虽然这样可以完成工作,但需要大量解释 Python,尤其是随着这些数据集的增长。所以我想知道我是否可以通过花哨的索引或转置或其他我的 numpy-fu 还不足以想象我自己的方式来完成这项工作。
有谁知道如何使用 numpy 更优雅地完成这项工作?
最佳答案
用 ndarray.transpose
转置将在这里工作。
>>> x.transpose(0, 2, 1)
array([[[1, 4],
[2, 5],
[3, 6]],
[[7, 0],
[8, 1],
[9, 2]]])
关于python - 我可以在一个 numpy 操作中使用 "rotate"和 slice 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200551/