【问题标题】:How to achieve 'inner' zip?如何实现“内部”拉链?
【发布时间】:2023-03-31 20:57:01
【问题描述】:

xy这两个数组的形状是(a,b)。如何获得形状(a,b,2) 的组合数组?

我目前的解决方案是

z = np.zeros((a,b,2))
z[:,:,0] = x
z[:,:,1] = y

是否可以在不创建新数组的情况下实现这一点?

【问题讨论】:

    标签: numpy reshape


    【解决方案1】:

    你可以使用np.dstack:

    In [2]: import numpy as np
    In [3]: a = np.random.normal(size=(4,6))
    In [4]: b = np.random.normal(size=(4,6))
    
    In [5]: np.dstack((a,b)).shape
    Out[5]: (4, 6, 2)
    

    还有一个比较:

    In [10]: d = np.dstack((a,b))  
    In [11]: c = np.zeros((4,6,2))
    In [12]: c[:,:,0] = a
    In [13]: c[:,:,1] = b
    
    In [14]: np.allclose(c,d)
    Out[14]: True
    

    【讨论】:

    • 这仍然会“创建一个新数组”,但我认为这是不可能避免的,除非 xy 开始时是连续的。
    • dstack 方法在我的情况下实际上有点慢。这是 1.42 秒与 1.29 秒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2011-02-17
    • 2017-10-14
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多