Вычисление средств дешево.
Вы профилировали свою программу? Сколько времени он тратит на перерасчет, который он имеет в виду? С правильными массивами numpy вместо упакованных в Python массивов это должно быть чрезвычайно дешево - определенно дешевле, чем создание любого такого ключа!
Причина, по которой вычисление ключа является дорогим, проста: это означает создание объекта различного размера. И на основании вашего описания кажется, что вы сначала создадите список целых чисел в штучной упаковке, затем кортеж целых чисел коробок, затем сериализуете это в строку и затем снова скопируете строку, чтобы добавить подчеркивание. Нет никакого способа, которым это будет быстрее, чем простая - векторизованная - агрегация при вычислении фактического среднего ...
Можно даже использовать подход MacQueens для обновления , а не пересчитывать их. Но даже это часто медленнее, чем их пересчет.
Я не удивлюсь, если ваш подход окажется в 10 раз медленнее, чем обычные k-средства ... И, вероятно, в 1000 раз медленнее, чем умные алгоритмы kmeans, такие как Хартиган и Вонг.