Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Создание n-мерного массива длины n

#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]]])

Комментариев нет:

Отправить комментарий