Я пытаюсь отбросить некоторые элементы списка данных в Mathematica, но я не понимаю, как работают Select
и Union
.Например, предположим, что у меня есть следующий список
list = {{0.10,0.20},{1.10,0.20},{0.70,0.80},{0.20,1.10},
{1.20,1.20},{0.12,0.18},{0.68,0.76}}
и я хочу только элементы в (0,1)x(0,1)
, учитывая, что точки в радиусе расстояния 0.05
являются дубликатами.В этом примере
list1 ={{0.10,0.20},{0.70,0.80}}
Мне все равно, какой элемент представляет класс эквивалентности.Я делаю следующее:
list1 = Select[list, 0 < Part[#,1] <1 &];Select[list,0 < Part[#,2] <1 &]
, который дает очки в (0,1)x(0,1)
, но если я пытаюсь использовать Union
, например,
Union[list1, SameTest -> (Abs[#1-#2] < 0.05 &)]
, я получаю ошибки слота.
Может кто-нибудь объяснить мне, как это сделать аккуратно?
--- EDIT ---
Использование
DeleteDuplicates[list1, Abs[Part[#1, 1] - Part[#2, 1]] < 10^-6 &]
делает трюк, ноИнтересно, почему я не могу работать со списком списков?