#python #matrix #linear-algebra
Вопрос:
У меня есть следующая проблема. У меня есть некоторая функция A(l, l’), которая является матрицей NxN, и l, я выполняю некоторый набор (скажем -M, …, M). Меня интересует создание матрицы блоков (B)(l, l’)=A(l, l’) (в приведенном выше примере она имеет размерность (2 М 1)Nx(2 М 1)N), l, l’ блок задается A(l, l’). Насколько я могу судить, нет стандартной функции, которая бы это делала (хотя мне кажется, что это естественный способ получить матрицу блоков — с точки зрения ее блоков). Такие вещи, как NumPy block и NumPy concatenate, похоже, не способны на это (не стесняйтесь поправлять меня, если я ошибаюсь). Может ли кто-нибудь помочь мне разобраться в этом или указать мне правильное направление?
Я новичок в python и в этом сообществе, так что не судите меня слишком строго.
Заранее благодарю вас!
Комментарии:
1. Не могли бы вы, пожалуйста, показать пример ввода и ожидаемого вывода?
2. Дело в том, что я пока не знаю, что вводить. У меня просто есть(l, l’), и я хочу сгенерировать из него блочную матрицу и изо всех сил пытаюсь это сделать.
Ответ №1:
Вы можете достичь этого numpy.bmat следующим образом
B = np.bmat([[A(i,j) for j in range(-M, M 1)] for i in range(-M, M 1)])
Сначала создается список списков матриц, а затем используется bmat, чтобы разместить их рядом
Комментарии:
1. Большое спасибо! Как оказалось, все очень просто.
2. Спасибо вам и добро пожаловать в сообщество.