1,669

edits

Jump to navigation
Jump to search
~~In many APLs ~~{{Built-in|Function axis|[ax]}} is a special syntax which modifies the behavior of a function ~~may be modified using bracket notation~~, for example <~~code~~source lang=apl inline>⌽[2]</~~code~~source> to [[Rotate]] along the second [[axis]]. Axis specification was a feature of [[Iverson notation]] and was ubiquitous in early APLs; many newer APLs which adhere to [[leading axis theory]] reject the use of axis specification in favor of the [[Rank operator]] because it is a fully general operator while the behavior of functions with axis must be defined for each function separately.
~~Additionally~~== Operators ==The following [[operator]]s may admit axis specification:* [[Reduction]] removes the specified right argument axis.* [[Scan]] works on the specified right argument axis. In [[SHARP APL]], [[~~reduction~~Replicate]] and [[~~scan~~Expand]] are also included in this category as they are operators and not functions. Axis specification always modifies the [[derived function]] obtained from an operator, and not the operator itself. The exact syntax may ~~admit axis specification~~vary: in most cases a set of brackets is parsed like a monadic operator and applies directly to the derived function; sometimes brackets can be applied directly to an operator, in which case the derived function produced by this operator is modified. In [[Dyalog APL]], a slash with axis retains its [[function-operator overloading]]: it can be applied as an operator or as a dyadic function ([[Replicate]] or [[Expand]]). == External links == === Documentation ===* [https://help.dyalog.com/latest/index.htm#Language/Primitive%20Operators/Operators%20Summarised.htm Dyalog]* [http://microapl.com/apl_help/ch_020_010_020.htm APLX]=== Lesson ===* [https://chat.stackexchange.com/rooms/52405/conversation/lesson-3-some-apl-operators-----#message-40898783 APL Cultivation] {{APL syntax}}

== Functions ~~with Axis ~~===== Monadic functions ===The following [[Monadic function|monads]] may allow an axis:

* [[Mix]] accepts a list of axes to specify where the axes of argument elements will be placed in the result.

* [[Ravel]] accepts a list of axes which are combined, or a single fractional number to add a length-1 axis.

* [[Split]] accepts a single axis, and encloses each [[vector]] along that axis.

* [[Reverse]] reverses along the specified axis.

=== Dyadic functions ===The following [[Dyadic function|dyads]] may allow one:* [[Scalar ~~dyadics~~function|Scalar]] [[dyadic]] s accept a list of axes to override [[conformability]] rules: it specifies , for each axis in the lower-rank (or left, in case of a tie) argument, which axis in the other argument it is paired with.

* [[Catenate]] combines along the selected axis, adding a new axis if a non-integer axis is given.

* [[Rotate]] rotates the right argument along the selected axis.

* [[Replicate]] and [[Expand]] work on the specified right argument axis.

* [[Take]] and [[Drop]] modify the selected right argument axes.

* [[~~Squish~~Squad indexing]] takes axes to specify which axis of the right argument corresponds to each left argument element.

* [[Partition]] and [[Partitioned Enclose]] have complicated and different behavior.

Retrieved from ‘https://aplwiki.com/wiki/Special:MobileDiff/1456...2400’