【问题标题】:concatenate two arrays into additional dimension python将两个数组连接成附加维度python
【发布时间】:2018-05-03 03:36:16
【问题描述】:

我有 2 个数组形状,每个 (50,50,3) 当我进行连接时....我需要新维度:

(2 , 50 , 50,3)

其中 2 代表 2 张图片 我试过了:

np.concatenate((cat01 , cat02 ) , axis = 0)

输出(100 , 50 , 3)

np.concatenate((cat01 , cat02 ) , axis = 1)

输出(50 , 100 , 3)

那么我怎样才能在数组中添加另一个维度?

【问题讨论】:

    标签: python numpy concatenation


    【解决方案1】:

    或者:

    np.array((cat01, cat02))
    

    比简单一点

    np.concatenate((cat01[None], cat02[None), 0)
    

    并且大致一样快。

    >>> cat01 = np.ones((50, 50, 3))
    >>> cat02 = np.zeros((50, 50, 3))
    >>> 
    >>> from timeit import timeit
    >>> kwds = dict(globals=globals(), number=100000)
    >>> 
    >>> timeit("np.concatenate((cat01[None], cat02[None]), 0)", **kwds)
    0.7162981643341482
    >>> timeit("np.array((cat01, cat02))", **kwds)
    0.7192633128724992
    >>> timeit("np.stack((cat01, cat02))", **kwds)
    1.1847702045924962
    

    【讨论】:

      【解决方案2】:

      你想要这个:

      np.stack((cat01, cat02))
      

      那么形状就是(2, 50, 50, 3)

      【讨论】:

        【解决方案3】:
        cat01G = cat01[np.newaxis , :,:,:]
        

        只需添加 np.newaxis 这将解决您的问题

        【讨论】:

          【解决方案4】:

          虽然stack 很方便,但最好了解如何直接使用concatenate

          np.concatenate((cat01[None,...] , cat02[None,...] ) , axis = 0)
          

          换句话说 - 调整每个输入数组的维度。使用Nonenp.newaxis 应该成为您在numpy 中经常使用的东西。也学会用reshape做同样的事情。

          也试试:

          np.expand_dims(cat01, axis=0)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-05-02
            • 1970-01-01
            • 2023-03-05
            • 2017-08-18
            • 2016-01-01
            • 2021-03-20
            • 2021-09-20
            相关资源
            最近更新 更多