Индексирование списка векторов в python - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть цикл, который создает векторы v_1, v_2, ... , v_n. Пока что я 'индексирую' их, создавая массив list_of_vectors=(v_1,v_2,...,v_n), и всякий раз, когда я хочу вызвать один из них, я извлекаю его из этого списка.

Есть ли более разумный способ сделать это?Например, в Mathematica вы можете назначить v[1]=something1, v[2]=something2 и назвать его как v[1], v[2].Я полагаю, что это не может быть сделано в python, но есть ли более умный / более эффективный способ индексации моих векторов, чем этот?

В общем, все, что я знаю, это сделать списки (массивы / векторы) извещи, но, возможно, это глупо / расточительно в питоне.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Один из способов сделать это - создать словари, как это:

b={}
b[0]=[1,2,3]
b[1]=[2,3,4]
print(b[1])
0 голосов
/ 27 ноября 2018

Есть несколько способов сделать это в Python.Кстати, в Python на самом деле нет встроенных «массивов» - есть списки, а array (стандартный модуль) и numpy (сторонний, но чрезвычайно распространенный модуль) имеют свои собственные массивы.

Первый, самый прямой способ - использовать списки.Если вы получите векторы в указанном вами порядке, создайте список с

v = [None]

Теперь v[0] определено, но вы, очевидно, никогда не будете его использовать.Затем, когда вы получите следующий вектор, v_1, выполните

v.append(v_1)

Значение v[1] теперь является вектором, который вы только что добавили.Следующим вектором будет v[2] и т. Д.

Если это не подходит, например, векторы, приходящие в более случайном порядке, вы можете использовать словарь.Создайте свой словарь с помощью

v = dict()

или, возможно, с

v = {}

Затем, когда вы получите вектор, произнесите v_2, который вы хотите связать с числом 2, выполните

v[2] = v_2

Затем вы можете позже ссылаться на v[2], когда захотите.Обратите внимание, что v[0] и v[1] еще не определены.Этот подход использует больше памяти, чем список, но он более гибкий.

Еще один способ - определить массив numpy соответствующего размера, а затем просто присвоить ему.Это также допускает случайный порядок, но вы должны знать самый большой индекс, который вы когда-либо будете использовать заранее.Два других способа отрегулируют размер объекта по мере необходимости.

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