我有一个4x4矩阵,想找到elements == 0
的索引。使用tf.where(tf.equal(matrix,0))
我得到类似的东西:
array([[0, 0],[0, 1], [1, 3],[2, 1],[3, 2]])
如何从列表中删除[0,1]
,因为我只希望每一行和每一列都有一个元素。
有没有一种方法可以自动删除已经存在的元素?
matrix = [[ 0., 0., 12989., 32048.],
[13292., 9700., 4485., 0.],
[24344., 0., 4125., 45000.],
[14541., 2325., 0., 12795.]]
list_zero = tf.where(tf.equal(matrix,0))
list_zero = [[0, 0],[0, 1], [1, 3],[2, 1],[3, 2]]
我想得到这个结果:
list_zero = [[0, 0],[1, 3],[2, 1],[3, 2]]
答案 0 :(得分:0)
这将属于“后处理”类方法,并且仅使用带条件的循环,但这似乎可以提供所需的答案。您可以将其放在函数中,并在输出中使用它。这种方法对行重复项进行优先排序,而忽略列重复项。
clean_list_zero = []
buffer = []
for idx, item in enumerate(list_zero):
buffer.append(item)
if idx > 0:
if buffer[idx-1][0] == buffer[idx][0]:
continue
else:
clean_list_zero.append(item)
else:
clean_list_zero.append(item)
print(clean_list_zero)
>>> [[0, 0], [1, 3], [2, 1], [3, 2]]