A simple solution can be:
import numpy as np
def unique_rows(a):
a = np.ascontiguousarray(a)
unique_a = np.unique(a.view([('', a.dtype)]*a.shape[1]))
return unique_a.view(a.dtype).reshape((unique_a.shape[0], a.shape[1]))
data = np.array([[1,8,3,3,4],
[1,8,9,9,4],
[1,8,3,3,4]])
print unique_rows(data)
#prints:
[[1 8 3 3 4]
[1 8 9 9 4]]
You can check this for many more solutions for this problem