Numpy reshape 1d to 2d array with 1 column

后端 未结 7 623
一生所求
一生所求 2020-12-08 15:08

In numpy the dimensions of the resulting array vary at run time. There is often confusion between a 1d array and a 2d array with 1 column. In one case I can ite

7条回答
  •  没有蜡笔的小新
    2020-12-08 15:27

    To avoid the need to reshape in the first place, if you slice a row / column with a list, or a "running" slice, you will get a 2D array with one row / column

    import numpy as np
    x = np.array(np.random.normal(size=(4,4)))
    print x, '\n'
    
    Result:
    [[ 0.01360395  1.12130368  0.95429414  0.56827029]
     [-0.66592215  1.04852182  0.20588886  0.37623406]
     [ 0.9440652   0.69157556  0.8252977  -0.53993904]
     [ 0.6437994   0.32704783  0.52523173  0.8320762 ]] 
    
    y = x[:,[0]]
    print y, 'col vector \n'
    Result:
    [[ 0.01360395]
     [-0.66592215]
     [ 0.9440652 ]
     [ 0.6437994 ]] col vector 
    
    
    y = x[[0],:]
    print y, 'row vector \n'
    
    Result:
    [[ 0.01360395  1.12130368  0.95429414  0.56827029]] row vector 
    
    # Slice with "running" index on a column
    y = x[:,0:1]
    print y, '\n'
    
    Result:
    [[ 0.01360395]
     [-0.66592215]
     [ 0.9440652 ]
     [ 0.6437994 ]] 
    

    Instead if you use a single number for choosing the row/column, it will result in a 1D array, which is the root cause of your issue:

    y = x[:,0]
    print y, '\n'
    
    Result:
    [ 0.01360395 -0.66592215  0.9440652   0.6437994 ] 
    

提交回复
热议问题