Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3488961
А
Аноним
01 ноября 2025 10:49 · публичный вопрос
А
Аноним

чтобы состыковать две двухмерные маирицы ве5ртикально в Python

Ответ нейросети
01 ноября 2025 10:49

Замечание по задаче

  • Чтобы состыковать две двумерные матрицы вертикально, нужно разместить матрицы одну под другой. Это возможно только если число столбцов в обеих матрицах одинаковое.

Ниже дам подробное решение и несколько вариантов реализации на Python (без библиотек и с NumPy), с пошаговым объяснением и примерами.

  1. Чистый Python (матрицы как списки списков)

Принцип

  • Проверяем, что у обеих матриц одинаковое число столбцов.
  • Складываем строки так, чтобы сначала шли строки A, затем строки B. Это и получится вертикальное «слоение».

Пример кода

  • Проверяем мерности и затем выполняем конкатенацию по осям.

def vertical_stack(A, B): # A и B — матрицы в виде списков списков if not isinstance(A, list) or not isinstance(B, list): raise TypeError("A и B должны быть списками (матрицами).") if any(not isinstance(row, list) for row in A) or any(not isinstance(row, list) for row in B): raise TypeError("A и B должны быть матрицами (списками списков).")

# Обработаем случаи пустых матриц
if not A and not B:
    return []
if not A:
    # B остается как есть (если в B все строки одной длины)
    return B
if not B:
    return A

a_cols = len(A[0])
b_cols = len(B[0])

# Проверки: все строки внутри каждой матрицы должны иметь одну и ту же длину
if any(len(r) != a_cols for r in A) or any(len(r) != b_cols for r in B):
    raise ValueError("Все строки в каждой матрице должны иметь одинаковую длину.")

# Проверка совместимости по числу столбцов
if a_cols != b_cols:
    raise ValueError("Число столбцов должно быть одинаковым у обеих матриц.")

# Вертикальное стекование: просто конкатенация списков
return A + B

Пример использования A = [ [1, 2, 3], [4, 5, 6] ] B = [ [7, 8, 9], [10, 11, 12] ] C = vertical_stack(A, B) print(C)

Результат:

[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

  1. С использованием NumPy

Если есть возможность установить NumPy, это удобнее и надёжнее для матричных операций.

Принцип

  • Преобразуем входы в массивы 2D и используем vstack (или concatenate по axis=0).

Пример кода import numpy as np

def vertical_stack_numpy(A, B): a = np.asarray(A) b = np.asarray(B)

if a.ndim != 2 or b.ndim != 2:
    raise ValueError("A и B должны быть двумерными массивами.")

if a.shape[1] != b.shape[1]:
    raise ValueError("Число столбцов должно быть одинаковым.")

return np.vstack((a, b))

Пример использования A = [ [1, 2, 3], [4, 5, 6] ] B = [ [7, 8, 9], [10, 11, 12] ] C = vertical_stack_numpy(A, B) print(C)

Результат:

[[ 1 2 3]

[ 4 5 6]

[ 7 8 9]

[10 11 12]]

  1. Быстрый способ без явной проверки (вариант ошибки по живой конкатенации)

Если уверены, что входные матрицы корректны и имеют одинаковое число столбцов, можно просто сделать конкатенацию по строкам:

  • Для списков: C = A + B
  • Для NumPy: C = np.vstack((A, B)) или C = np.concatenate((A, B), axis=0)

Пример с чистым Python A = [ [1, 2], [3, 4] ] B = [ [5, 6], [7, 8] ] C = A + B # результат: [[1,2],[3,4],[5,6],[7,8]]

Важные моменты, которые стоит помнить

  • Число столбцов должно совпадать: len(A[0]) == len(B[0]).
  • Все строки внутри каждой матрицы должны иметь одинаковую длину.
  • Пустые матрицы: если обе пустые, результат пустой список; если одна пустая, можно вернуть другую матрицу как есть (после соответствующих проверок).
  • При использовании NumPy нет нужды вручную проверять размеры, но полезно держать в уме совместимость по числу столбцов.

Если хочешь, можешь прислать конкретные матрицы (или их размерности), скажу, как лучше их стыковать и приведу готовый код под твой случай.