Удалить все столбцы, соответствующие значению в Numpy - PullRequest
0 голосов
/ 07 сентября 2018

Предположим, у меня есть матрица с количеством двоичных значений:

matrix([[1., 1., 1., 0., 0.],
    [0., 0., 1., 1., 1.],
    [0., 0., 0., 1., 0.],
    [0., 0., 0., 0., 1.]])

Использование np.sum (M, 0) производит:

matrix([[1., 1., 2., 2., 2.]])

Как удалить все столбцы из матрицы, которые имеют только значение 1 ?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете преобразовать матрицу в массив. Затем найдите индекс со значениями 1, а затем используйте эти индексы для удаления значений. Например, вы можете сделать следующее.

import numpy as np
M = np.matrix([[1, 1, 1, 0, 0], [0, 0, 1, 1, 1], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]])

M = np.sum(M, 0)

# conversion to array
array = np.squeeze(np.asarray(M))
index_of_elements_with_value_1 = [i for i, val in enumerate(array) if val == 1]
array = np.delete(array, index_of_elements_with_value_1)
print(array)
0 голосов
/ 07 сентября 2018

Здесь проще иметь массив:

M = M.A

Теперь с помощью простой нарезки:

M[:, np.sum(M, 0)!=1]

array([[1., 0., 0.],
       [1., 1., 1.],
       [0., 1., 0.],
       [0., 0., 1.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...