Rearranging a 4d numpy array

后端 未结 2 824
暖寄归人
暖寄归人 2020-12-22 02:15

I have a 4d numpy array which represents a dataset with 3d instances. Lets say that the shape of the array is (32, 32, 3, 73257).

How can i change the

相关标签:
2条回答
  • 2020-12-22 02:42

    It looks like np.rollaxis(arr, axis=-1) will do what you want. Example:

    >>> arr = np.empty(32, 32, 3, 73257)
    >>> arr2 = np.rollaxis(arr, axis=-1)
    >>> arr2.shape
    (73257, 32, 32, 3)
    

    This will make arr[i,j,k,l] == arr2[l,i,j,k] for all ijkl

    0 讨论(0)
  • 2020-12-22 02:53

    The np.transpose function does exactly what you want, you can pass an axis argument which controls which axis you want to swap:

    a = np.empty((32, 32, 3, 73257))
    b = np.transpose(a, (3, 0, 1, 2))
    

    The axis of b are permuted versions of the ones of a: the axis 0 of b is the 3-rd axis of a, the axis 1 of b is the 0-th axis of a, etc...

    That way, you can specify which of the axis of size 32 you want in second or in third place:

    b = np.transpose(a, (3, 1, 0, 2))
    

    Also gives an array of the desired shape, but is different from the previous one.

    0 讨论(0)
提交回复
热议问题