我可以在一个Numpy操作中“旋转”并切片吗?

时间:2018-11-08 02:06:52

标签: python arrays numpy

我有这样的数据:

t = tf.constant(np.array([[[1,2],[3,4]],[[5,6],[7,8]]]))
# I want to extract h = [[1,2],[7,8]]

我需要把它做成这个“形状”:

[[[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)

虽然这可以完成工作,但是要解释很多Python,尤其是随着这些数据集的增长。因此,我想知道是否可以通过花哨的索引或换位来完成此操作,或者我的numpy-fu还不够强大,无法想象自己。

有人知道如何用numpy更好地完成这项工作吗?

1 个答案:

答案 0 :(得分:4)

使用ndarray.transpose进行换位将在这里起作用。

>>> x.transpose(0, 2, 1)
array([[[1, 4],
        [2, 5],
        [3, 6]],

       [[7, 0],
        [8, 1],
        [9, 2]]])