Difference between revisions of "Shape"
Miraheze>Adám Brudzewsky 
(→Documentation: BQN link) 

(20 intermediate revisions by 5 users not shown)  
Line 1:  Line 1:  
−  +  {{BuiltinShape⍴}} is a [[monadic function]] which returns the ''shape'' of its argument array, namely a [[vector]] of lengths of the array along each [[axis]]. The [[dyadic function]] using the same symbol is [[Reshape]] which produces an array of the shape specified by its left argument.  
−  <  +  
+  An array's shape may be any vector of nonnegative integers with length less than or equal to the [[maximum rank]]. The length of an array's shape is the array's [[rank]], and the product of the shape is its [[bound]]. If the shape is [[Empty arrayempty]] then the array is a [[scalar]].  
+  
+  An array's shape, along with the [[index origin]], determine the possible values which can be used as an [[index]] into the array. A complete index is a vector of integers with the same length as the shape. When the index origin is subtracted from the index each element must be at least 0 and less than the corresponding element of the shape. In languages with [[negative indexing]] it may be greater than or equal to the negative of the shape rather than 0.  
+  
+  == Examples ==  
+  
+  <source lang="apl">  
(⍬≡⍴)¨1 'A' ⍝ The shape of a scalar is the empty numeric vector ⍬  (⍬≡⍴)¨1 'A' ⍝ The shape of a scalar is the empty numeric vector ⍬  
1 1  1 1  
Line 9:  Line 16:  
⍴'ABC'∘.,1 2 3 4∘.×0J1 1J2 ⍝ Two consecutive outer products result in a cuboid  ⍴'ABC'∘.,1 2 3 4∘.×0J1 1J2 ⍝ Two consecutive outer products result in a cuboid  
3 4 2  3 4 2  
−  </  +  </source> 
−  {{APL  +  
+  == See also ==  
+  * [[Tally]]  
+  * [[Index generator]]  
+  == External links ==  
+  
+  === Lessons ===  
+  
+  * [https://chat.stackexchange.com/rooms/52405/conversation/lesson10aplfunctions APL Cultivation]  
+  * [https://www.sacrideo.us/apladay3arrayshaveshape/ Arrays have Shape] (from [https://www.sacrideo.us/tag/apladay/ APL a Day])  
+  
+  === Documentation ===  
+  
+  * [https://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Shape.htm Dyalog]  
+  * [http://wiki.nars2000.org/index.php/Rho NARS2000]  
+  * [http://microapl.com/apl_help/ch_020_020_460.htm APLX]  
+  * [https://www.jsoftware.com/help/dictionary/d210.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/dollar J NuVoc] (as <source lang=apl inline>$</source> "Shape Of")  
+  * [https://mlochbaum.github.io/BQN/doc/shape.html BQN]  
+  
+  {{APL features}}  
+  {{APL builtins}}[[Category:Primitive functions]][[Category:Array characteristics]] 
Latest revision as of 02:48, 17 July 2021
⍴

Shape (⍴
) is a monadic function which returns the shape of its argument array, namely a vector of lengths of the array along each axis. The dyadic function using the same symbol is Reshape which produces an array of the shape specified by its left argument.
An array's shape may be any vector of nonnegative integers with length less than or equal to the maximum rank. The length of an array's shape is the array's rank, and the product of the shape is its bound. If the shape is empty then the array is a scalar.
An array's shape, along with the index origin, determine the possible values which can be used as an index into the array. A complete index is a vector of integers with the same length as the shape. When the index origin is subtracted from the index each element must be at least 0 and less than the corresponding element of the shape. In languages with negative indexing it may be greater than or equal to the negative of the shape rather than 0.
Examples
(⍬≡⍴)¨1 'A' ⍝ The shape of a scalar is the empty numeric vector ⍬
1 1
⍴'ABCDE' ⍝ The shape of a vector is a length1 vector
5
⍴'ABC'∘.,1 2 3 4 ⍝ The shape of the matrix result of an outer product
3 4
⍴'ABC'∘.,1 2 3 4∘.×0J1 1J2 ⍝ Two consecutive outer products result in a cuboid
3 4 2
See also
External links
Lessons
Documentation
APL features [edit]  

Builtins  Primitives (functions, operators) ∙ Quad name 
Array model  Shape ∙ Rank ∙ Depth ∙ Bound ∙ Index (Indexing) ∙ Axis ∙ Ravel ∙ Ravel order ∙ Element ∙ Scalar ∙ Vector ∙ Matrix ∙ Simple scalar ∙ Simple array ∙ Nested array ∙ Cell ∙ Major cell ∙ Subarray ∙ Empty array ∙ Prototype 
Data types  Number (Boolean, Complex number) ∙ Character (String) ∙ Box ∙ Namespace 
Concepts and paradigms  Leading axis theory ∙ Scalar extension ∙ Conformability ∙ Leading axis agreement ∙ Scalar function ∙ Pervasion ∙ Glyph ∙ Identity element ∙ Complex floor ∙ Total array ordering 
Errors  LIMIT ERROR ∙ RANK ERROR ∙ SYNTAX ERROR ∙ DOMAIN ERROR ∙ LENGTH ERROR ∙ INDEX ERROR ∙ VALUE ERROR 