Increasing power consumption of high-performance systems leads to reliability, survivability, and cooling related problems. Motivated by this observation, several recent efforts focused on reducing disk power consumption through hardware, OS and compiler based techniques. This paper presents a novel approach to reducing disk power consumption of large-scale, array-intensive scientific applications. It proposes and evaluates a compiler-based approach that employs two complementary techniques: data reorganization and disk mapping. The first of these, data reorganization, determines a suitable layout for data in the array space, whereas the second technique, disk mapping, decides the corresponding layout in the disk space. The goal of data reorganization and disk mapping is to ensure that data (from the different disk-resident arrays) that are accessed within the same loop iteration are colocated in the same set of disks. In this way, we can increase disk inter-access times (idle periods of disks) and this in turn allows better exploitation of the underlying hardware mechanisms used for reducing power. Our experiments with eight disk I/O-intensive scientific applications indicate that the proposed approach brings significant reductions in energy consumption, whether the underlying disk system uses spin-down disks or speed-reduced disks, two previously-proposed hardware-based disk power reduction schemes. The results also show that both the components of our scheme (data reorganization and disk mapping) are very important since applying any of these components alone does not generate large savings for most of our applications.