python - 从 numpy 数组中逐一减去行

标签 python arrays numpy vectorization

我有一个 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)

最佳答案

您可以使用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) 沿前两个轴求和以获得最终输出。

关于python - 从 numpy 数组中逐一减去行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920727/

相关文章:

python - vscode找不到带诗和wsl的python

arrays - numpy 二维数组分区的优化方法

c - 将二维数组传递给 C 中的函数

python - 如何对字符串数组执行 bincount?

python - 在 numpy 中对大型 3D 图像进行下采样

python - 在 python 中使用确定组合不同的长列表

python - 如何根据浮点值从字典中随机选择一个键

C 编程,如何在日期结构数组中找到最旧的日期?

python - seaborn 热图颜色图

Python C 扩展以负步长读取 numpy 数组