Matching pair of numbers {a,-a}, where a is numeric
lst = {{2, -2}, {1, 5}, {1, -3}, {-3, 3}};
Pick[lst, Total[lst, {2}], 0]
{{2,-2}, {-3,3}}
First @ Timing[res0 = Pick[Ta, Total[Ta, {2}], 0];]
0.093750
First @ Timing[res0a = Pick[Ta, Total /@ Ta, 0];]
0.187500
First @ Timing[res0b = Pick[Ta, Plus @@ Transpose[Ta], 0];] (*thanks: 2012rcampion *)
0.062500
First @ Timing[res1 = DeleteCases[Ta, {a_, b_} /; a != -b];]
4.093750
First @ Timing[res2 = Cases[Ta, {a_, b_} /; a + b == 0];]
3.656250
Equal @@ {res0, res0a, res0b, res1, res2}
True
Update: for the case where a
is any real number you can Unitize
the selector array (thanks: @MrWizard):
First @ Timing[Pick[Ta, Unitize@Total[Ta, {2}], 0];]
0.125000
First @ Timing[Pick[Ta, Unitize[Total /@ Ta], 0];]
0.156250
First @ Timing[Pick[Ta, Unitize[Plus @@ Transpose[Ta]], 0];]
0.046875