Страницы

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

воскресенье, 7 апреля 2019 г.

Многомерные массивы python

Как написать функцию которая генерируют Многомерный массив изходя из входных данных. например входит число N, то результатом будет массив N на N


Ответ

Если нужны именно массивы array.array или bytearray, то никак. В Python нет многомерных массивов. Разве что сделать одномерный массив размером n*n, и обращаться по индексу x+n*y. Например, как bytearray(n*n) или, скажем, array.array("l", [0 for _ in range(0, n*n)]) Если под понятие «многомерного массива» подойдет понятие «списка списков» (списки в CPython реализованы именно как массивы), то, собственно, сделать их. Например, так: >>> n = 3 >>> [[0 for _ in range(0, n)] for _ in range(0, n)] [[0, 0, 0], [0, 0, 0], [0, 0, 0]] Если нужны именно матрицы, то можно воспользоваться NumPy >>> numpy.matrix(numpy.zeros((n, n))) matrix([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]) Или, если нужны не матрицы (а n×n было частным случаем), то, непосредственно, numpy.array >>> numpy.zeros((n, n)) array([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]) Или, как верно замечает @mikillskegg, например, если требуется массив не чисел, то вместо numpy.array/numpy.zeros можно воспользоваться более низкоуровневым интерфейсом numpy.ndarray >>> a = numpy.ndarray(shape=(n, n), dtype=(unicode, 1)) >>> a.fill(u"X") array([[u'X', u'X', u'X'], [u'X', u'X', u'X'], [u'X', u'X', u'X']], dtype='

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

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