我有一个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();
}
}
答案 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)沿前两个轴求和以进行最终输出。