1. A computer-implemented method of reshaping a distributed data array that has data blocks distributed among a plurality of locales of a distributed system in order to form a reshaped local version of said data array in which at least some of the data blocks have been redistributed among the locales of the distributed system the computer-implemented method comprising acts of: identifying a data array having a plurality of data blocks distributed and stored at a plurality of locales; generating for said data array a range-partitioned flattened representation of said data array which represents how data blocks of said data array are partitioned over a first locale and at least one other locale and how the partitioned data blocks intersect at said first and said at least one other locale; identifying for said data array a block length parameter that describes the largest number of data blocks in the range-partitioned flattened representation of said data array that appear consecutively in each locale; identifying a stride parameter that describes the amount of separation between data blocks based on said identified block length parameter in the range-partitioned flattened representation of said data array; based on the identified block length parameter and the identified stride parameter, determining for the range-partitioned flattened representation of said data array one or more intersections between data blocks stored on said first locale and data blocks stored on said at least one other locale; based on the one or more intersections, identifying which of the data blocks are to be transferred from the first locale to the at least one other locale and which of the data blocks are to be transferred from the at least one other locale to the first locale to produce a reshaped local version of said data array; and producing said reshaped local version of said data array by transferring the data blocks identified for transfer between the first and the at least one other locale.