Быстрый алгоритм двухмерного объединения в Mathematica

У меня возникли проблемы с разработкой достаточно быстрого алгоритма объединения в Mathematica. У меня есть большой (~ 100 тыс. Элементов) набор данных вида T = {{x1, y1, z1}, {x2, y2, z2}, ....} и я хотите разделить его на 2D-массив размером около 100x100 ячеек, при этом значение ячейки задается суммой значений Z, которые попадают в каждую ячейку.

В настоящее время я просматриваю каждый элемент таблицы, используя Select, чтобы выбрать, в какой ячейке он должен находиться, на основе списков границ ячеек, и добавляю значение z в список значений, занимающих эту ячейку. В конце я добавляю Total в список ящиков, суммируя их содержимое (я делаю это, потому что иногда мне хочется делать другие вещи, например, максимизировать).

Я пробовал использовать Gather и другие подобные функции для этого, но описанный выше метод был до смешного быстрее, хотя, возможно, я плохо использую Gather. В любом случае сортировка по моему методу все еще занимает несколько минут, и я чувствую, что Mathematica может справиться лучше. У кого-нибудь есть под рукой хороший эффективный алгоритм?

10
задан Ben Farmer 18 November 2011 в 06:42
поделиться