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

я есть массив NumPy с целочисленными значениями. Значения матрицы варьируются от 0 до максимального элемента в матрице (другими словами, все числа от 0 до максимального элемента данных представлены в нем). Мне нужно построить эффективно (эффективное средство быстрое полностью векторизованное решение) для поиска количества элементов в каждой строке и их кодирования в соответствии со значениями матрицы.

Я не мог найти подобный вопрос или вопрос, который каким-то образом помог решить эту проблему.

Так что, если у меня есть этоdata на входе:

# shape is (N0=4, m0=4) 
1   1   0   4
2   4   2   1
1   2   3   5
4   4   4   1

желаемый результат:

# shape(N=N0, m=data.max()+1):
1   2   0   0   1   0
0   1   2   0   1   0
0   1   1   1   0   1
0   1   0   0   3   0

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

При использовании NumPy для векторизации этого ключевая проблема заключается в том, что поиск каждого числа один за другим идет медленно и при условии, что представлено много уникальных чисел, это не может быть эффективным решением. Как правило, обаN и количество уникальных номеров довольно велико (кстати,N кажется, больше, чем количество уникальных чисел).

У кого-нибудь есть отличные идеи?)

Ответы на вопрос(1)

Ваш ответ на вопрос