Airports offer the worst exchange rate so if you arrive by plane and need some Indian Rupees for taxi you should exchange small amount of money (50 EUR or USD is minimum), and later exchange the rest.
Most of the hotels will provide reasonable exchange rates for buying Indian Rupees. If you really want to get the best deal you should visit street exchange offices and ask on few places. The rate might vary. Most of them will not display the rate publicly and sometimes you can even bargain.
Exchanging money in banks will not provide the rate as good as on the street but it’s safe.
Avoid suspicious guys on streets that offer money exchange as they might cheat you. Money forgery is also not rear, especially with 500 Rupee notes.
It’s good to have smaller bank notes with you all the time (20 and 50 Rupee) because taxi and ricksha drivers might not have a cache with them and might not be able to return the rest of 500 Rupees.