4,493
edits
m (Array characteristics category) |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
:''This article is about the array property. For the special syntax which modifies the behavior of a function, see [[bracket axis]]'' | |||
In the APL [[array model]], an '''axis''' is one dimension along which the [[element]]s of an array are organized. The [[rank]] of an array is the number of axes it has, and the [[shape]] is the list of their lengths. The [[index]] of a single element of an array is composed of a one index along each axis. An index [[Index#Index along an axis|along one axis]] is a single number; in this sense, axes are one-dimensional. | In the APL [[array model]], an '''axis''' is one dimension along which the [[element]]s of an array are organized. The [[rank]] of an array is the number of axes it has, and the [[shape]] is the list of their lengths. The [[index]] of a single element of an array is composed of a one index along each axis. An index [[Index#Index along an axis|along one axis]] is a single number; in this sense, axes are one-dimensional. | ||
Line 9: | Line 10: | ||
Use of the [[Rank operator]] allows a programmer to control which axes are used without referring to them explicitly (for example, by index). Rank, and more generally the [[leading axis theory]], uses the [[ravel order]] axis hierarchy directly without requiring another ordering to be imposed on axes. Despite this, the choice to make a positive operand to Rank specify a [[cell]] rank, while a negative operand specifies a [[frame]] length, weakly suggests an ordering that places trailing axes first and leading axes last—the opposite of the index ordering. | Use of the [[Rank operator]] allows a programmer to control which axes are used without referring to them explicitly (for example, by index). Rank, and more generally the [[leading axis theory]], uses the [[ravel order]] axis hierarchy directly without requiring another ordering to be imposed on axes. Despite this, the choice to make a positive operand to Rank specify a [[cell]] rank, while a negative operand specifies a [[frame]] length, weakly suggests an ordering that places trailing axes first and leading axes last—the opposite of the index ordering. | ||
The choice to give leading axes lower indices and trailing axes higher indices is related to the choice to put lower-order places at higher indices in the base representation functions [[Decode]] and [[Encode]]. This is known in the wider programming world as a [[wikipedia:Endianness|big-endian]] order. Because the base representation and axis ordering are in alignment, [[selection]] of an single element from an array satisfies the clean identity < | The choice to give leading axes lower indices and trailing axes higher indices is related to the choice to put lower-order places at higher indices in the base representation functions [[Decode]] and [[Encode]]. This is known in the wider programming world as a [[wikipedia:Endianness|big-endian]] order. Because the base representation and axis ordering are in alignment, [[selection]] of an single element from an array satisfies the clean identity <syntaxhighlight lang=apl inline>i⌷A</syntaxhighlight> {{←→}} <syntaxhighlight lang=apl inline>((⍴A)⊥i)⌷,A</syntaxhighlight>. If base representation used the opposite order, both of Decode's arguments would need to be reversed. | ||
{{APL features}}[[Category:Array characteristics]] | {{APL features}}[[Category:Array characteristics]] |