как реализовать двумерный массив, где каждый элемент имеет набор значений в python?

#python

#python

Вопрос:

У меня возникла проблема с реализацией следующего в python:

У меня есть матрица nxn, подобная этой:

 [ X11 X12 X13 ... x1n

Xn1 Xn2 Xn3 ... Xnn  ]
 

Это просто получить, но любое из этих значений «Xij» имеет 4 простых значения int (0 или 1 каждое), и я, похоже, не могу понять, как создать массив или коллекцию, которые я могу использовать.

Кто-нибудь знает, какое лучшее решение для этого сценария?

Возможно, создание объекта для хранения 4 чисел int, а затем создание двумерного массива, который их содержит, но я хочу «наилучший» подход к этой проблеме.

Я использую numpy и python 2.7.

Ответ №1:

Почему бы не просто трехмерный массив, то есть массив массивов массивов, где самый внутренний массив содержит четыре элемента, а два внешних массива — ваша матрица?

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

1. Кроме того, я бы использовал numpy или scipy для их хранения вместо собственного списка или массива python.

2. Потому что с помощью numpy доступ к элементу из этого глубокого 4-кортежа будет проще. вы можете сказать x[:,:,0], чтобы получить двумерный массив первого элемента вашего 4-го кортежа. Я предполагаю, что мой комментарий — это просто предложение, а не необходимость.

Ответ №2:

Почему бы не упаковать целые числа в кортеж? Тогда у вас будет двумерный массив в виде:

 [[(1,0,0,1),   (1,1,1,0),   (0,0,0,1)],
 [(1,0,0,0),   (0,1,1,0),   (0,1,0,1)]]
 

Кортеж хорош тем, что он легкий (по сравнению с объектом); кроме того, более привычно использовать кортеж, если каждое целое число в группе из 4 имеет определенное значение, т. Е. Первое целое число означает что-то отличное от третьего.

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

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