繁体   English   中英

如何在 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 函数并没有给我想要的 output。 提前感谢您的帮助

一个简单的列表理解和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)

output 将是:

[[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的向量和矩阵object,所以当你返回“c”时,你应该看到

>>> c
array ([[6, 6, 9, 9],
       [9, 11, 12, 10]])

由于您需要新数组中的结果,因此我正在创建一个新矩阵 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 个 arrays。

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)

您可以为此使用循环。

从内置导入 len

定义 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM