【问题标题】:subtract rows one by one from numpy array从numpy数组中逐行减去
【发布时间】:2017-01-29 12:10:08
【问题描述】:

我有一个 2D numpy 数组,A。

我想从 A 中逐行减去每一行,并将逐行绝对和存储在一个数组中。

有没有办法在不使用 for 循环的情况下执行操作?下面是带有 for 循环的代码。

import numpy as np
A = np.random.randint(5,size=(8,9))
b = np.zeros(A.shape[1]);
for i in xrange(A.shape[0]):
    b = b + np.sum(np.absolute(A - A[i,:]), axis=0)

【问题讨论】:

    标签: python arrays numpy vectorization


    【解决方案1】:

    你可以使用broadcasting -

    (np.abs(A[:,None,:] - A)).sum(axis=(0,1))
    

    步骤:

    (1) 保持最后一个轴对齐得到A 的两个版本:

    Input1 (A[:,None,:])    :  M x 1 x N
    Input2 (A)              :      M x N
    

    获取这两个输入之间的绝对差异,从而生成 3D 数组。

    (2) 沿前两个轴求和以获得最终输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多