Как добавить элементы в 2D-массив в Python - PullRequest
1 голос
/ 25 мая 2020

Если честно, я действительно не знаю, как правильно объяснить, что я хочу, так что лучше мне это показать. По сути, я хочу добавить элементы из двух разных 2D-списков

a = [[5, 4, 5, 4], [4, 5, 6, 8]]

b = [[1, 2, 4, 5], [5, 6, 6, 2]]

И я не хочу объединять их в 2D-массив с именем c, поэтому он должен выглядеть примерно так:

c = [[6, 6, 9, 9], [9, 11, 12, 10]]

Я огляделся, но функции sum и zip не дали мне желаемого результата. Заранее благодарим за любую помощь

Ответы [ 7 ]

1 голос
/ 25 мая 2020

То, что вы ищете, по сути, является сложением матриц:

import numpy as np
a = np.array([[5, 4, 5, 4], [4, 5, 6, 8]])
b = np.array([[1, 2, 4, 5], [5, 6, 6, 2]])
c = a + b

Где «array» - это вектор и объект матрицы numpy, поэтому, когда вы вернете «c», вы должны увидеть

>>> c
array ([[6, 6, 9, 9],
       [9, 11, 12, 10]])
1 голос
/ 25 мая 2020

На самом деле я мог бы сделать это, используя две функции zip , одну внутри другой.

c = []
for x, y in zip(a, b):
  array = []
  for e1, e2 in zip(x, y):
    array.append(e1+e2)
  c.append(array)
print(c)

Результат будет:

[[6, 6, 9, 9], [9, 11, 12, 10]]
1 голос
/ 25 мая 2020

Простое понимание списка и zip будет достаточно, используйте:

c = [[x + y for x, y in zip(s1, s2)] for s1, s2 in zip(a, b)]

Результат:

#print(c)
[[6, 6, 9, 9], [9, 11, 12, 10]]
0 голосов
/ 25 мая 2020

Для этого можно использовать al oop.

from builtins import len ​​

def insaneSum (x, y):

newTable = x #creates a copie of your first array
i = 0
j = 0
while i < len(x):
    while j < len(x[i]):

        newTable[i][j] = x[i][j] + y[i][j] #replaces value of copie for the sum

        j = j+1
    i = i+1

return newTable

a = [[ 5, 4, 5, 4], [4, 5, 6, 8]] b = [[1, 2, 4, 5], [5, 6, 6, 2]]

c = insaneSum (a, b) print (c)

0 голосов
/ 25 мая 2020

Вы можете использовать вложенный l oop для решения проблемы.

a = [[5, 4, 5, 4], [4, 5, 6, 8]]
b = [[1, 2, 4, 5], [5, 6, 6, 2]]
c=[]

l=len(a)
for i in range(l):
    temp=[]
    l2=len(a[i])
    for j in range(l2):
        p=a[i][j]+b[i][j]
        temp.append(p)
    c.append(temp)

print(c)
0 голосов
/ 25 мая 2020

Вы можете использовать для l oop для объединения двух массивов.

c = [[a[i][j] + b[i][j] for j in range(len(a[0]))] for i in range(len(a))]
0 голосов
/ 25 мая 2020

Поскольку вам нужен результат в новом массиве, я создаю новую матрицу C как копию A. Чтобы я мог легко добавить B к A. Вы можете сделать это:

c = a
for i in range(0,len(a)):
    for j in range(0,len(a[0]):
        c[i][j] = a[i][j] + b[i][j] 
print(c)
...