Axis: Difference between revisions
Jump to navigation
Jump to search
Miraheze>Adám Brudzewsky No edit summary |
Miraheze>Marshall mNo edit summary |
||
Line 1: | Line 1: | ||
In the APL [[array model]], an axis is one dimension along which the [[ | 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 along one axis is a single number; in this sense, axes are one-dimensional. | ||
== Axis ordering == | == Axis ordering == | ||
Line 9: | Line 9: | ||
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 [https://en.wikipedia.org/wiki/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 <source lang=apl inline>i⌷A ←→ ((⍴A)⊥i)⌷,A</source>. If base representation used the opposite order, both of Decode's arguments would need to be reversed. | 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 [https://en.wikipedia.org/wiki/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 <source lang=apl inline>i⌷A</source> {{←→}} <source lang=apl inline>((⍴A)⊥i)⌷,A</source>. If base representation used the opposite order, both of Decode's arguments would need to be reversed. | ||
{{APL programming language}} | {{APL programming language}} |