Arequipa's Rodríguez Ballón Airport has direct flights from Lima (1h20m), Cuzco, and Juliaca (for Puno). LATAM, Sky, and Jetsmart all serve the route from Lima at competitive prices. The airport is about 15 minutes from the centre by taxi.
Buses arrive at the Terminal Terrestre south of the city. Cruz del Sur, Tepsa, and Oltursa run the most reliable services. The overnight bus from Lima is around sixteen hours; from Cuzco about ten; from Puno about six. Take a cama (180-degree reclining) ticket on the long routes — the price difference is small and you get a much better sleep. The road from Puno climbs over a 4,500-metre pass and the descent into Arequipa is beautiful by day.
There are no passenger trains. Within the centre, a metered taxi is cheap. Walking is fine in the colonial core during daylight; at night, take a registered taxi from your hotel or the plaza rather than flagging one down on the street.