gpt4 book ai didi

python - 根据索引从矩阵中删除一些元素

转载 作者:行者123 更新时间:2023-12-04 13:06:51 25 4
gpt4 key购买 nike

我有一个矩阵:

a = ([[1, 0, 0, 0],
[0, 0, 1, 1],
[0, 1, 0, 1]
[1, 0, 0, 1]])

我想打印矩阵中的 0 但不是所有的 0。我只想保留索引最小的每一行中的 0,并删除该行中所有后续的零。例如,在这个矩阵的第一行中,第二个元素 (a[0][1]) 应该被保留,第一行中的其余元素应该被删除,因为它们都是零.

我将 pop() 用于二维数组,但出现属性错误。而且输出也不正确。我不知道如何比较索引并在每一行中选择最小的列索引。

这是我的代码:

for ix, row in enumerate(a):
for iy, i in enumerate(row):
if i==0 and (iy+ix<(iy+1)+ix) :
a[ix].pop((iy+1))
print(ix,iy)
elif i==0 and (iy+ix>(iy+1)+ix):
a[ix].pop(iy)
print(ix,iy+1)
print(a)

我的预期结果是一组索引和修改后的矩阵 a。

0 1

1 0

2 0

3 1

a=[[1,0],[0,1,1],[0,1,1],[1,0]]

谁能帮帮我?

最佳答案

此解决方案仅在每一行中至少有一个零时才有效。

indices = []
for x,row in enumerate(a):
i = row.index(0)
indices.append((x,i))
a[x] = row[:i+1] + [e for e in row[i:] if e]

print(indices)
print(a)

输出

[(0, 1), (1, 0), (2, 0), (3, 1)]
[[1, 0], [0, 1, 1], [0, 1, 1], [1, 0, 1]]

关于python - 根据索引从矩阵中删除一些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69046601/

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