4,494
edits
Miraheze>Marshall |
m (Text replacement - "http://help.dyalog.com" to "https://help.dyalog.com") |
||
(9 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{Built-in|Ravel|,}} is a [[primitive function]] introduced in [[APL\360]] which returns the ''ravel'' of an array. In the APL [[array model]], an array's ravel is the [[vector]] containing all its [[elements]] in [[ravel order]]. It is equivalent to [[Reshape|reshaping]] an array using its [[bound]] for the new [[shape]]. Reshaping the ravel using the original array's shape restores that array. | ||
In some APLs an [[Function axis|axis]] may be specified for Ravel in order to combine only some [[Axis|axes]] of an array, or insert a length-1 axis. | In some APLs an [[Function axis|axis]] may be specified for Ravel in order to combine only some [[Axis|axes]] of an array, or insert a length-1 axis. | ||
Line 9: | Line 9: | ||
You can use ravel to squash a [[matrix]] down to one dimension. The elements are listed in reading order—left to right, top to bottom. | You can use ravel to squash a [[matrix]] down to one dimension. The elements are listed in reading order—left to right, top to bottom. | ||
<source lang=apl> | <source lang=apl> | ||
⎕←x ← 3 4⍴⍳12 ⍝ A matrix | |||
1 2 3 4 | 1 2 3 4 | ||
5 6 7 8 | 5 6 7 8 | ||
Line 50: | Line 50: | ||
== Description == | == Description == | ||
The ravel of an array < | The ravel of an array <source lang=apl inline>A</source> has shape <source lang=apl inline>,×/⍴A</source> and shares elements with <source lang=apl inline>A</source>. Thus Ravel may be modelled as a [[Reshape|reshaping]] function <source lang=apl inline>{(×/⍴⍵)⍴⍵}</source>. The [[element]] with [[index]] [[vector]] <source lang=apl inline>I</source> is moved to index <source lang=apl inline>(⍴A)⊥I</source> in [[index origin]] 0, or <source lang=apl inline>⎕IO+(⍴A)⊥I-⎕IO</source> in arbitrary index origin. | ||
As with any reshaping, the result of Ravel has the same [[prototype]] as the argument. | As with any reshaping, the result of Ravel has the same [[prototype]] as the argument. | ||
Line 57: | Line 57: | ||
Ravel was present in the first version of [[APL\360]]<ref>Falkoff, A.D., and K.E. Iverson. [https://www.jsoftware.com/papers/APL360TerminalSystem.htm "The APL\360 Terminal System"]. Research Report RC-1922, IBM, 1967-10-16.</ref> and has been included in every APL since. | Ravel was present in the first version of [[APL\360]]<ref>Falkoff, A.D., and K.E. Iverson. [https://www.jsoftware.com/papers/APL360TerminalSystem.htm "The APL\360 Terminal System"]. Research Report RC-1922, IBM, 1967-10-16.</ref> and has been included in every APL since. | ||
== See also == | |||
* [[Enlist]] | |||
== External links == | == External links == | ||
Line 66: | Line 69: | ||
=== Documentation === | === Documentation === | ||
* [ | * [https://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Ravel.htm Dyalog] ([https://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Ravel%20with%20Axes.htm with axis]), | ||
* [http://wiki.nars2000.org/index.php/Rho NARS2000] | * [http://wiki.nars2000.org/index.php/Rho NARS2000] | ||
Line 78: | Line 81: | ||
<references /> | <references /> | ||
{{APL | {{APL features}} | ||
{{APL built-ins}} | {{APL built-ins}}[[Category:Primitive functions]] |