【问题标题】:Numpy: subtract column from a matrix without repmatsNumpy:从没有repmats的矩阵中减去列
【发布时间】:2017-02-24 22:05:07
【问题描述】:

抱歉缺乏研究 - 我很着急。 当我这样做时

data = data-data[:,0]

我收到广播错误。我该怎么做才能让 numpy 理解我?

【问题讨论】:

    标签: numpy array-broadcasting


    【解决方案1】:

    使用None/np.newaxis 将切片扩展到2D,然后减去 -

    data -= data[:,0,None]
    

    或者,我们也可以重塑以获得 2D -

    data -= data[:,0].reshape(-1,1)
    

    样品运行检查形状,因此没有。暗淡 -

    In [103]: data = np.random.rand(4,5)
    
    In [104]: data[:,0].shape    # Originally
    Out[104]: (4,)
    
    In [105]: data[:,0,None].shape
    Out[105]: (4, 1)
    
    In [106]: data[:,0].reshape(-1,1).shape
    Out[106]: (4, 1)
    

    在使用建议的方法之前和之后将这些并排放置 -

    data            :  (4,5)
    data[:,0]       :    (4)
    

    形状未对齐以进行自动广播。

    让我们扩展 -

    data            :  (4,5)
    data[:,0,None]  :  (4,1)
    

    现在对齐形状以进行广播减法,因此我们将每一列减去第一列。 docs on broadcasting 应该有更多关于这方面的信息。

    【讨论】:

    • 哇,这太神秘了!但工作。11 分钟接受虽然
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多