gpt4 book ai didi

python - 在矩阵元素邻居中求和

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:02 27 4
gpt4 key购买 nike

=== 解决了===

我需要找到他邻居的矩阵和的每个元素并将其写入另一个矩阵。例如:矩阵[0][0]

matrix2[0][0] = matrix[-1][0] + matrix[0][-1] + matrix[1][0] + matrix[0][1]

1 2 3
3 4 5
5 6 7

对于 [0][0] - 2 + 3 + 3 + 5

输入矩阵:

matrix = []
tmp = []
answer = []
inp = ''
while inp != 'end':
tmp = [int(i) for i in input().split() if i != 'end']
if len(tmp) == 0: inp = 'end'
else: matrix.append(tmp)
tmp = []

现在我不知道完成这个任务需要哪个“if...else”条件。

当前代码:

for i in range(0, len(matrix)):
for j in range(0, len(matrix[i])):
summ = 0
if i-1 >= 0:
summ += matrix[i-1][j]
elif i-1 < 0:
summ += matrix[-1][j]

if i+1 > len(matrix)-1:
summ += matrix[0][j]
elif i+1 <= len(matrix)-1:
summ += matrix[i+1][j]

if j-1 >= 0:
summ += matrix[i][j-1]
elif j-1 < 0:
summ += matrix[i][-1]

if j+1 > len(matrix[i])-1:
summ += matrix[i][0]
elif j+1 <= len(matrix[i])-1:
summ += matrix[i][j+1]
answer[i][j] = summ
continue

有人能指出我的代码有什么问题吗?

已解决:

   matrix = []
tmp = []
answer = []
inp = ''
flg = 1
while inp != 'end':
tmp = [int(i) for i in input().split() if i != 'end']
if len(tmp) == 0: inp = 'end'
else: matrix.append(tmp)
tmp = []
tmp = []
for i in range(0, len(matrix)):
if len(matrix)==1 and len(matrix[i])==1:
summ = matrix[0][0] *4
flg = 0
answer.append(summ)
break
for j in range(0, len(matrix[i])):
summ = 0

if i-1 >= 0:
summ += matrix[i-1][j]
elif i-1 < 0:
summ += matrix[-1][j]

if i+1 > len(matrix)-1:
summ += matrix[0][j]
elif i+1 <= len(matrix)-1:
summ += matrix[i+1][j]

if j-1 >= 0:
summ += matrix[i][j-1]
elif j-1 < 0:
summ += matrix[i][-1]

if j+1 > len(matrix[i])-1:
summ += matrix[i][0]
elif j+1 <= len(matrix[i])-1:
summ += matrix[i][j+1]

tmp.append(summ)
continue
answer.append(tmp)
tmp = []

i=j=0
if flg:
for i in range(0, len(answer)):
for j in range(0, len(answer[i])):
print(answer[i][j], ' ', end='')
print('')
if not flg:
print(summ)

最佳答案

像这样:

>>> a = [[1,2,3],[3,4,5],[5,6,7]]
>>> a
[[1, 2, 3],
[3, 4, 5],
[5, 6, 7]]
>>> def neighbors(i,j,a):
... return [a[i][j-1], a[i][(j+1)%len(a[0])], a[i-1][j], a[(i+1)%len(a)][j]]
...
>>> [[sum(neighbors(i,j,a)) for j in range(len(a[0]))] for i in range(len(a))]
[[13, 14, 15],
[15, 16, 17],
[17, 18, 19]]
>>> a.append([100, 200, 300])
>>> a
[[1, 2, 3],
[3, 4, 5],
[5, 6, 7],
[100, 200, 300]]
>>> [[sum(neighbors(i,j,a)) for j in range(len(a[0]))] for i in range(len(a))]
[[108, 208, 308],
[15, 16, 17],
[116, 216, 316],
[506, 408, 310]]

关于python - 在矩阵元素邻居中求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com