Как добавить элементы в 3-мерный массив в python

Я пытаюсь хранить данные в трехмерном массиве, т. е. x [0] [0] [0] в python. как инициализировать x. и добавить к нему значения. Я попробовал это.

x=[] x[0][0][0]=value1 x[0][0].append(value1) 

обе линии выдают ошибку вне диапазона. как это сделать. Мне это нравится. x [0] [0] [0] = значение1, x [1] [0] [0] = значение2, x [0] [1] [0] = значение3 и т. д., как это сделать в python.

Я хочу создать такой массив

 x=[[[11,[111],[112]],[12],[13]],[[21,[211],[212]],[22],[23],[24]],[[31],[32]]] x[0][0][0] will give 11 x[1][0][0] 21 x[0][0][1] 111 

и т.д

  • Python scikit learn pca.explained_variance_ratio_ cutoff
  • Как загрузить определенные файлы с помощью python-libtorrent
  • SettingWithCopyWarning, даже при использовании loc (?)
  • Не удается открыть файлы из каталога в python
  • Глобальная обработка исключений Python
  • Как использовать значение шага десятичного диапазона ()?
  • Проблемы с matplotlib и libpng с записью ipython
  • "TypeError: Невозможно преобразовать объект NoneType в str неявно", когда var должен иметь значение
  • 5 Solutions collect form web for “Как добавить элементы в 3-мерный массив в python”

    Я рекомендую использовать numpy для многомерных массивов. Это делает его намного более удобным и намного быстрее. Это будет выглядеть так:

     import numpy as np x = np.zeros((10,20,30)) # Make a 10 by 20 by 30 array x[0,0,0] = value1 

    Тем не менее, если вы не хотите использовать numpy или нужны не прямоугольные многомерные массивы, вам нужно будет рассматривать его как список списков списков и инициализировать каждый список:

     x = [] x.append([]) x[0].append([]) x[0][0].append(value1) 

    Изменить: Или вы можете использовать компактную нотацию, показанную в ответе ndpu (x = [[[value1]]]).

    Если вы создаете некоторый 3D разреженный массив, вы можете сохранить все данные в dict:

     x={} x[0,0,0] = 11 x[1,0,0] = 21 x[0,1,1] = 111 

    или:

     from collections import defaultdict x = defaultdict(lambda :defaultdict(lambda :defaultdict(int))) x[0][0][0] = 11 x[1][0][0] = 21 x[0][0][1] = 111 

    Если вы можете использовать numpy, вы можете инициализировать массив фиксированного размера как:

     import numpy x = numpy.zeros((i, j, k)) 

    где i, j и k – требуемые размеры.

    Затем вы можете индексировать этот массив с помощью нотации среза:

     x[0, 0, 0] = value1 x[1, 0, 0] = value2 
     >>> x=[[[[]]]] >>> x[0][0][0]=0 >>> x [[[0]]] >>> x[0][0].append(1) >>> x [[[0, 1]]] 

    Компиляция вышеприведенных методов в отношении эффективного создания двумерного дикта :

     from collections import defaultdict x = defaultdict(lambda :defaultdict()) x["a"]["b"] = 123 x["a"]["c"] = 234 x["b"]["a"] = 234 x["b"]["c"] = 234 x["c"]["a"] = 234 x["c"]["b"] = 234 for i in x: for j in x[i]: print i, j, x[i][j] 

    Производит:

     ac 234 ab 123 ca 234 cb 234 ba 234 bc 234 

    Чтобы увеличить количество измерений (например, до трех измерений), просто увеличьте лямбда-гнездо, как показывает HYRY:

     x = defaultdict(lambda :defaultdict(lambda :defaultdict(int))) 
    Python - лучший язык программирования в мире.