Как найти значения элементов == 0 в матрице?

У меня есть матрица 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]]

Всего 1 ответ


Это подпадает под подход «постобработки» и просто использует цикл с условными выражениями, но, похоже, дает ответ, который вам нужен. Вы можете поместить его в функцию и использовать на своих выходах. Этот подход отдает приоритет дубликатам строк и игнорирует дубликаты столбцов.

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]]

Есть идеи?

10000