Передача матрицы M * D в матрицу N * D в python (D больше 1, M> N) - PullRequest
0 голосов
/ 24 января 2020

Я бы хотел вычесть строки матрицы MXD из матрицы NXD (D больше 1, M> N) без использования циклов for в Python. например, предположим, что я хочу вычесть строки матрицы 100 * 25 из строк матрицы 20 * 25. Как написать код без циклов for (я знаю, что могу сделать это с помощью трансляции, но не могу кодировать).

1 Ответ

0 голосов
/ 24 января 2020

Метод 1:

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

Метод 2:

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

Метод 3:

def subtract(A, B):
    B_ = np.repeat(B, 5).reshape(B.size, -1).T.reshape(-1, B.shape[1])
    return A - B_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...