#python #массивы #алгоритм #python_3x
Можно ли создать n-мерный массив? Если да то как это реализовать? Если матрица это "список списков", то он будет выглядеть примерно так: [ [ [...[]...] ],[ [...[]...] ] ] Ну, или чтоб понятней былo, как n вложенных отрезков,картинка ниже, (a1[...[]...]b1, a2_m[...[]...]b2_m,...) А как это в коде реализовать? Если скажем,мне нужно вводить n с клавиатуры. Большое спасибо! Вот вопрос по многомерным массивам,который не подошел мне
Ответы
Ответ 1
Попробовал воспользоваться рекурсией. Первый аргумент - глубина массива. Второй аргумент - количество элементов в массиве. def quant_array(n, x): try: assert isinstance(n, int) except AssertionError: return "Input an integer!" if n <= 1: return [n]*x return [(n, quant_array(n-1, x))]*x print(quant_array(3, 2)) [(3, [(2, [1, 1]), (2, [1, 1])]), (3, [(2, [1, 1]), (2, [1, 1])])]Ответ 2
Чтобы создать n-мерный numpy массив, у которого каждое измерение имеет n элементов: >>> import numpy as np # $ pip install numpy >>> n = 3 >>> np.arange(n**n).reshape(*[n]*n) array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8]], [[ 9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 26]]]) Если вы хотите, чтобы всего n элементов было: >>> np.arange(n).reshape(n, *[1]*(n-1)) array([[[0]], [[1]], [[2]]])
Комментариев нет:
Отправить комментарий