Python: матрица NxNxN

В этом уроке мы рассмотрим, как в Python создать матрицу NxNxN.

Что такое NxNxN?

Термин NxNxN (произносится как N на N на N) также называется кубом NxNxN или головоломкой NxNxN. Это куб с одинаковыми размерами, то есть куб будет иметь одинаковую высоту, ширину и длину.

Под эту категорию попадают куб 2x2x2, кубик Рубика, куб 4x4x4, куб 5x5x5. Куб 1x1x1 также относится к этой категории, даже если это не головоломка, потому что он завершает набор NxNxN.

Как создать матрицу NxNxN?

Теперь давайте узнаем, как создать матрицу nxnxn разными способами.

Создаём матрицу NxN в Python с неповторяющимися числами

Приведенный ниже код предназначен для создания матрицы nxn. Он не повторяет числа по строкам и столбцам.


import numpy as np


N = 5


row = np.arange(N)


result = np.zeros((N, N))


for i in row:
    result[i] = np.roll(row, i)

print(result)

Вывод

[[0. 1. 2. 3. 4.]
 [4. 0. 1. 2. 3.]
 [3. 4. 0. 1. 2.]
 [2. 3. 4. 0. 1.]
 [1. 2. 3. 4. 0.]]

Создаём матрицу NxNxN с помощью numpy

В этом коде просто нужно изменить значение N в зависимости от требований и формы, которую вам нужно сгенерировать. Для стандартного кубика Рубика это будет 3x3x3, поэтому значение n будет равно 3.

Пример:


import numpy as np


n = 3
a = np.arange(n)
b = np.array([a]*n)
matrix = np.array([b]*n)


flat_mat = matrix.reshape((int(matrix.size/n),n))


rotate = np.eye(n) + 2


result = np.array([rotate.dot(x) for x in flat_mat])

result=result.reshape((n,n,n))
print(result)

Вывод

[[[6. 7. 8.]
  [6. 7. 8.]
  [6. 7. 8.]]

 [[6. 7. 8.]
  [6. 7. 8.]
  [6. 7. 8.]]

 [[6. 7. 8.]
  [6. 7. 8.]
  [6. 7. 8.]]]

Ответить