【发布时间】:2021-11-01 21:27:53
【问题描述】:
我有一个矩阵:
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]]
谁能帮帮我?
【问题讨论】:
-
你能包括你的预期结果吗?
-
当然。我编辑了帖子。 @MichaelSzczesny
-
你使用的是 numpy 还是没有?标签说一件事,编码另一件事......
-
是的,我使用它。这段代码只是我想找到一种获取输出的方法。我也尝试过 numpy 甚至 pandas。我在标签中提到了 numpy 来询问是否有 numpy 的任何帮助。现在我也在为我程序的其他部分编写你的 numpy 代码。这对我帮助很大。谢谢你。 @MadPhysicist
标签: python arrays python-3.x matrix numpy-ndarray