繁体   English   中英

在python中广播一个M*D矩阵到N*D矩阵(D大于1,M>N)

[英]Broadcasting a M*D matrix to N*D matrix in python (D is greater than 1, M>N)

我想从 NXD 矩阵(D 大于 1,M > N)中减去 MXD 矩阵的行,而不在 Python 中使用任何 for 循环。 例如,假设我想从 20*25 矩阵的行中减去 100*25 矩阵的行。 如何在没有 for 循环的情况下编写代码(我知道我可以使用广播来完成,但似乎无法编写代码)。

方法一:

def subtract(A, B):
    m = A.shape[0]
    n = B.shape[0]
    C = np.empty_like(A)

    for i in range(m // n):
        C[i*n : (i+1)*n] = A[i*n : (i+1)*n] - B

    return C

方法二:

def subtract(A, B):
    m = A.shape[0]
    n = B.shape[0]
    return A - np.tile(B, (m // n, 1))

方法三:

def subtract(A, B):
    B_ = np.repeat(B, 5).reshape(B.size, -1).T.reshape(-1, B.shape[1])
    return A - B_

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM