[英]How to decompose 2D (m*n, m*n) matrix into 4D (m, m, n, n) matrix in Python?
[英]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.