Как получить доступ к элементам в 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)