【问题标题】:Is this the best way to add an extra dimension to a numpy array in one line of code?这是在一行代码中向 numpy 数组添加额外维度的最佳方法吗?
【发布时间】:2013-07-23 23:52:05
【问题描述】:

如果 k 是一个任意形状的 numpy 数组,那么k.shape = (s1, s2, s3, ..., sn),我想重塑它,使k.shape 变成(s1, s2, ..., sn, 1),这是最好的方法吗?

k.reshape(*(list(k.shape) + [1])

【问题讨论】:

    标签: python arrays python-3.x numpy reshape


    【解决方案1】:

    这样更容易:

    k.reshape(k.shape + (1,))
    

    但如果你只想在最后添加一个空维度,你应该使用numpy.newaxis

    import numpy as np
    k = k[..., np.newaxis]
    

    k = k[..., None]
    

    (见documentation on slicing)。

    【讨论】:

      【解决方案2】:

      您可以使用numpy.expand_dims

      In [4]: import numpy as np                                                          
      
      In [5]: a = [1,2,3,4]                                                                              
      
      In [6]: np.expand_dims(a, axis=1)                                                                  
      Out[6]: 
      array([[1],
             [2],
             [3],
             [4]])
      

      【讨论】:

      • 注意:np.reshape 比 np.expand_dims 快。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2019-11-19
      • 2023-03-07
      • 2023-03-05
      • 2013-07-08
      • 2012-01-19
      相关资源
      最近更新 更多