Как получить доступ к элементам в 2D-массиве?

Я новичок в python, и я хотел бы понять, как можно манипулировать элементами массива. Если у меня есть, например:

a= ( a11 a12 a13 )  and b = (b11 b12 b13) 
     a21 a22 a23             b21 b22 b23

Я определил их в python, например:

a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]

Я видел, что я не могу ссылаться на a[1][1], а на a[1], который дает мне результат [2,1]. Итак, я не понимаю, как мне получить доступ ко второй строке этих массивов? Это будет a21, a22, a23, b21, b22, b23? И как бы я сделал, чтобы умножить их на c1 = a21*b21, c2 = a22*b22 и т.д.?

Ответ 1

Если у вас

a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]

Тогда

a[1][1]

Будет работать нормально. Он указывает на второй столбец второй строки, как вы хотели.

Я не уверен, что вы сделали неправильно.

Чтобы умножить ячейки в третьем столбце, вы можете просто сделать

c = [a[2][i] * b[2][i] for i in range(len(a[2]))] 

Что будет работать для любого количества строк.

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

a = zip(*a)

или вы можете создать его таким образом:

a=[[1, 2, 3], [1, 1, 1]]

Ответ 2

Если вы хотите сделать много вычислений с помощью массива 2d, вы должны использовать массив NumPy вместо списка гнезд.

для вашего вопроса, вы можете использовать: zip (* a) для его транспонирования:

In [55]: a=[[1,1],[2,1],[3,1]]
In [56]: zip(*a)
Out[56]: [(1, 2, 3), (1, 1, 1)]
In [57]: zip(*a)[0]
Out[57]: (1, 2, 3)

Ответ 3

Кажется, здесь работает:

>>> a=[[1,1],[2,1],[3,1]]
>>> a
[[1, 1], [2, 1], [3, 1]]
>>> a[1]
[2, 1]
>>> a[1][0]
2
>>> a[1][1]
1

Ответ 4

a[1][1] работает должным образом. Вы имеете в виду a11 как первый элемент первой строки? Потому что это будет [0] [0].

Ответ 5

Посмотрите внимательно, сколько скобок имеет ваш массив. Я встретил пример, когда функция вернула ответ с дополнительной скобкой, например:

>>>approx
array([[[1192,  391]],
       [[1191,  409]],
       [[1209,  438]],
       [[1191,  409]]])

И это не сработало

>>> approx[1,1]
IndexError: index 1 is out of bounds for axis 1 with size 1

Это может открыть скобки:

>>> approx[:,0]
array([[1192,  391],
       [1191,  409],
       [1209,  438],
       [1191,  409]])

Теперь можно использовать стандартную запись доступа к элементу:

>>> approx[:,0][1,1]
409

Ответ 6

Если у вас есть это:

a = [[1, 1], [2, 1],[3, 1]]

Вы можете легко получить доступ к этому с помощью:

print(a[0][2])
a[0][1] = 7
print(a)