Из простой таблицы найдите внутренний список, содержащий большую часть одного значения с одним ограничением. - PullRequest
0 голосов
/ 01 октября 2018

У меня есть пустая матрица, которая выглядит следующим образом:

matrix = [[0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1.],
         [0., 1., 1., 1., 1., 0., 1., 1., 0., 1., 1., 0., 0., 1., 1., 0.,
           1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 1., 0., 0., 1., 0., 1., 0., 0., 1., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]  

edit: в ответ на запрос вывода матрицы, как насчет обращения к массиву?
m = np.array(matrix)

Я пытаюсь найти внутренний список, содержащий наибольшее 1 или 0, с одним ограничением .

Ограничение состоит в том, что при поиске большинства 1 или 0 во внутренних списках внутренний список сегментируется.Например, каждый внутренний список должен быть сегментирован по 12-му индексу.
Таким образом, при поиске самых длинных единиц или 0 он может находиться в первом сегменте первого внутреннего списка (до 12-го индекса) или может находиться впоследний сегмент (после 12-го индекса).

Есть ли более простой способ сделать это?

Формат вывода является гибким, если он обозначает индекс внутреннего списка, и True для «до 12-го индекса» или False для «после 12-го индекса».

Вот пример:
ответы в этом примере соответствуют приведенной выше матрице
Большинство ONES: 1, True (индекс позиции внутреннего списка, * 1027)* означает, что это до 12-го индекса).
Большинство нулей: 2, False (индекс списка, False потому что после индекса)

Это может быть немного запутанным - пожалуйста, дайтеЯ знаю, могу ли я кое-что прояснить для вас.

edit: уточнить, не ища самую длинную последовательность.Поиск сегмента с наибольшим количеством появлений данного значения.

1 Ответ

0 голосов
/ 01 октября 2018

IIUC для поиска 1, вы можете использовать следующий код, для 0 заменить 1 на 0:

a = np.array(matrix)
#taking values only till 12th index
Before_12_index = (a[:,:13]==1).sum(1)
#taking values only after 12th index
After_12_index = (a[:,13:]==1).sum(1)

#condition for checking whether they have max number of 1 before or after 12th index
cond_1 = (Before_12_index>After_12_index).reshape(-1,1)

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