python - 根据索引从矩阵中删除一些元素
问题描述
我有一个矩阵:
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]]
有人可以帮我吗?
解决方案
尝试这个:
a = [[1, 0, 0, 0],
[0, 0, 1, 1],
[0, 1, 0, 1],
[1, 0, 0, 1]]
b = []
for i in a:
f = False
c = []
for j in i:
if (j==0 and f==False) or j != 0:
c.append(j)
if j == 0: f = True
else:
continue
b.append(c)
输出:
[[1, 0], [0, 1, 1], [0, 1, 1], [1, 0, 1]]
要获取数组中的索引zero
,您可以尝试以下操作:
list({i : j.index(0) for i,j in enumerate(b)}.items())
# [(0, 1), (1, 0), (2, 0), (3, 1)]
推荐阅读
- java - 难道我们没有任何Java内置方法来查找数字数组的平均值吗?
- apache-kafka - 具有多个主题的 Kafka MQTT 连接器
- javascript - POST 值到另一个应用程序
- arcgis - 我的点绘制在 0 纬度,0 经度
- c# - 使用MediaCapture c#在触发前后记录秒数的圆形缓冲区
- javascript - 在 VueJS 项目中安装 slick carousel
- javascript - 流式传输 html5 画布内容的有效方式?
- docker - 即使在配置 DOCKER_OPTS="iptables=false" 之后,ubuntu 18.04 服务器 ufw 也不会阻塞
- java - 在java中导入特定的类
- azure - 在 Azure 中测试机器人应用程序没有响应