Динамический доступ к многомерному массиву Python - PullRequest
1 голос
/ 17 октября 2011

Я новичок в питоне. Я был смущен тем, как получить доступ к элементу массива динамически.

У меня есть список b = [1,2,5,8], который я получаю динамически, поэтому его длина может варьироваться. С помощью этого списка мне нужно обновить многомерный массив как mArr [1] [2] [5] [8]. Длина списка и размерность массива совпадают, как указано в примере

По сути, я ищу технику для доступа к многомерному массиву относительно списка «b» в виде: marr [b]. Этот m-массив также создается динамически.

Я пытался посмотреть на учебники numpy, но не нашел решения. Я что-то упустил?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

если размеры [1,2,5,8], вы можете использовать числа 0, 0..1, 0..4, 0..7 для каждого измерения.

Numpy позволяет вам получить доступ к позициям с кортежами:

shape = [1, 2, 5, 8]
pos = [0, 1, 1, 3]

my_array = np.ones(shape)
my_array[tuple(pos)] # will return 1
1 голос
/ 17 октября 2011

Вы можете создать такую ​​функцию, как:

def array_update(b, marr, value):
  if len(b) > 1:
    return array_update(b[1:], marr[b[0]], value)
  marr[b[0]] = value

Учитывая b = [1,2,5,8], чтобы установить значение mArr [1] [2] [5] [8]на foo, вы бы позвонили:

array_update(b, mArr, 'foo')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...