Numpy reshape an array with specific order

前端 未结 4 1517
梦毁少年i
梦毁少年i 2021-01-24 01:25

Let\'s say I have this array x:

x = array([1, 2, 3, 4, 5, 6, 7, 8])
x.shape = (8,1)

I want to reshape it to become

array([[1, 3         


        
相关标签:
4条回答
  • 2021-01-24 02:02
    In[4]: x.reshape(4, 2).T
    Out[4]: 
    array([[1, 3, 5, 7],
           [2, 4, 6, 8]])
    
    0 讨论(0)
  • 2021-01-24 02:10

    The easiest way to do this is to specify the orderargument in reshape function.


    You need the Fortran order.

    Side note: Matlab by default is using Fortran order but in python you need to specify that.


    Use this:

    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = x.reshape(2,4, order='F')
    
    print(y)
    #array([[1, 3, 5, 7],
    #       [2, 4, 6, 8]])
    
    0 讨论(0)
  • 2021-01-24 02:14

    Yes, you can do:

    y = np.array([x[0::2], x[1::2]])
    
    0 讨论(0)
  • 2021-01-24 02:15

    Another option is to use the option order='F' to your reshape-call like

    res = numpy.reshape(my_array, (2,4), order='F')
    

    https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.reshape.html

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