Find list position and mapping list
Most directly:
Pick[ii, tt, x_ /; x > 150]
{{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153}, {503, 139}, {739, 132}, {857, 128}, {904, 171}}
Or slightly more efficiently:
Pick[ii, Thread[tt > 150]]
{{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153}, {503, 139}, {739, 132}, {857, 128}, {904, 171}}
Some other things to observe:
p1 = Join @@ Position[tt, x_ /; x > 150]
{1, 2, 4, 8, 9, 14, 21, 25, 26}
mask = Boole @ Thread[tt > 150]
{1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1}
ii[[p1]]
{{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153}, {503, 139}, {739, 132}, {857, 128}, {904, 171}}
Pick[ii, mask, 1]
{{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153}, {503, 139}, {739, 132}, {857, 128}, {904, 171}}
Also:
ii ~Extract~ Position[tt, x_ /; x > 150]
{{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153}, {503, 139}, {739, 132}, {857, 128}, {904, 171}}
Do you want something like this?
Pick[ii, # >= 150 & /@ tt]
=> {{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153}, {503, 139}, {739, 132}, {857, 128}, {904, 171}}
or
location = Boole[# >= 150] & /@ tt
=> {1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1}
and
Pick[ii, location, 1]
ttpos=MapIndexed[If[# >= 150, First@#2, ## &[]] &, tt]
or
ttpos=Select[Range[Length[tt]], tt[[#]] >= 150 &]
(* {1, 2, 4, 8, 9, 14, 21, 25, 26} *)
or
UnitStep[tt - 150]
(* {1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1}*)
Range[Length[tt]] UnitStep[tt - 150] /. (0) -> Sequence[]
or
SparseArray[UnitStep[tt - 150]]["AdjacencyLists"]
(* {1, 2, 4, 8, 9, 14, 21, 25, 26} *)
For the corresponding elements in ii
:
ii[[ttpos]]
(* {{46, 154}, {93, 158}, {160, 112}, {271, 128}, {317, 153},
{503, 139}, {739, 132}, {857, 128}, {904, 171}} *)