从numpy数组中逐个减去行

时间:2017-01-29 12:10:09

标签: python arrays numpy vectorization

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

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

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

public static byte[] ToByteArray(this Bitmap image)
{
    using (var ms = new MemoryStream())
    {
        image.Save(ms, image.RawFormat);
        return ms.ToArray();
    }
}

1 个答案:

答案 0 :(得分: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)沿前两个轴求和以进行最终输出。