Я пытаюсь вычесть две матрицы разных форм, используя трансляцию. Однако я застрял в какой-то момент. Нужно простое решение, как решить проблему.
Буквально я оцениваю данные в сетке (первый шаг - вычитание). Например, у меня есть 5 точек сетки сетка = (-20, -10, 0, 10, 20) и массив данных длиной 100.
Line:
u = grid.reshape ((ngrid, 1)) - данные
отлично работает ngrid = 5 в этом тривиальном примере.
Выходные данные представляют собой матрицу из 5 строк и 100 столбцов, поэтому каждая точка данных оценивается в каждой точке сетки.
Далее я хочу сделать это для 2 сеток и 2 наборов данных одновременно (данные имеют размер (2x100, например, 2 рандовых массива). Мне уже удалось вычесть два набора данных из одной сетки, но использование двух сеток выдает ошибка.
В приведенном ниже примере a - это вертикальный массив сетки, длина 5 точек, а data - массив случайных данных формы (100,2).
В этом случае используется кортеж (2,5 100), поэтому u [0] и u [1] имеет 5 строк и 100 столбцов, что означает, что данные были правильно вычтены из сетка.
Вторая строка кода - это то, что я пытаюсь сделать. Ошибка следующая:
ValueError: операнды не могут быть переданы вместе с фигурами (5,2) (2,1100)
u = a - data.T [:, None] # a - вертикальная сетка из 5 элементов. Работает нормально.
u = grid_test - data.T [:, None] # grid_test - это 2 столбца 5 строк матрицы из 2 сеток. Ошибка.
Мне нужна строка кода, аналогичная приведенной выше, но она должна работать, если " a " содержит 2 столбца, например две разные сетки. В итоге ожидаемый результат - « u », который содержит в дополнение к вышеописанным результатам еще две матрицы, в которых одинаковые данные (оба массива) оцениваются во второй сетке.
К сожалению, я не могу использовать петли - только векторизация и трансляция.
Заранее спасибо.