如何在 Python 中的二维数组中添加元素
How to add elements in a 2D array in Python
老实说,我真的不知道如何正确解释我想要的东西,所以我最好展示一下。
基本上我想做的是从 2 个不同的 2D 列表中添加元素
a = [[5, 4, 5, 4], [4, 5, 6, 8]]
b = [[1, 2, 4, 5], [5, 6, 6, 2]]
我不想将它们合并到一个名为 c 的二维数组中,所以它应该看起来像这样:
c = [[6, 6, 9, 9], [9, 11, 12, 10]]
我环顾四周,但是 sum 和 zip 函数没有给我想要的输出。在此先感谢您的帮助
由于您需要新数组中的结果,我正在创建一个新矩阵 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)
您可以使用 for 循环合并 2 个数组。
c = [[a[i][j] + b[i][j] for j in range(len(a[0]))] for i in range(len(a))]
您可以使用嵌套循环来解决问题。
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)
简单的列表理解和 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]]
事实上我可以通过使用两个 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]]
你要找的本质上是矩阵加法:
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 的向量和矩阵对象,所以当你 return "c" 时,你应该看到
>>> c
array ([[6, 6, 9, 9],
[9, 11, 12, 10]])
您可以为此使用循环。
从内置导入 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 = 疯狂总和(a,b)
打印(c)
老实说,我真的不知道如何正确解释我想要的东西,所以我最好展示一下。 基本上我想做的是从 2 个不同的 2D 列表中添加元素
a = [[5, 4, 5, 4], [4, 5, 6, 8]]
b = [[1, 2, 4, 5], [5, 6, 6, 2]]
我不想将它们合并到一个名为 c 的二维数组中,所以它应该看起来像这样:
c = [[6, 6, 9, 9], [9, 11, 12, 10]]
我环顾四周,但是 sum 和 zip 函数没有给我想要的输出。在此先感谢您的帮助
由于您需要新数组中的结果,我正在创建一个新矩阵 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)
您可以使用 for 循环合并 2 个数组。
c = [[a[i][j] + b[i][j] for j in range(len(a[0]))] for i in range(len(a))]
您可以使用嵌套循环来解决问题。
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)
简单的列表理解和 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]]
事实上我可以通过使用两个 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]]
你要找的本质上是矩阵加法:
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 的向量和矩阵对象,所以当你 return "c" 时,你应该看到
>>> c
array ([[6, 6, 9, 9],
[9, 11, 12, 10]])
您可以为此使用循环。
从内置导入 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 = 疯狂总和(a,b) 打印(c)