({{, (RefLink[StructuredArray, paclet:ref/StructuredArray])[st,{(Subscript[d, 1]),(Subscript[d, 2]),…},data] 
represents a (Subscript[d, 1])×(Subscript[d, 2])×… array with structure type st and specific content data. }})

OpenersNotesSection(Spacer1)Details

(RefLink[Normal, paclet:ref/Normal])[StructuredArray[…]] gives the ordinary array corresponding to a structured array object.

(RefLink[SparseArray, paclet:ref/SparseArray])[StructuredArray[…]] gives a sparse array corresponding to a structured array object.

The elements in (RefLink[StructuredArray, paclet:ref/StructuredArray]) need not be numeric.

The individual elements of a structured array cannot themselves be lists.

List and matrix operations are typically set up to work as they do in (RefLink[Normal, paclet:ref/Normal])[StructuredArray[…]].

Functions with attribute (RefLink[Listable, paclet:ref/Listable]) are automatically threaded over the individual elements of the ordinary arrays represented by (RefLink[StructuredArray, paclet:ref/StructuredArray]) objects. If the function is not supported for the structure type, then the result will be returned as an ordinary or sparse array.

(RefLink[Part, paclet:ref/Part]) extracts specified parts of the array represented by a (RefLink[StructuredArray, paclet:ref/StructuredArray]) object, rather than parts of the (RefLink[StructuredArray, paclet:ref/StructuredArray]) expression itself.

(RefLink[StructuredArray, paclet:ref/StructuredArray]) is treated as a raw object by functions like (RefLink[AtomQ, paclet:ref/AtomQ]) and for purposes of pattern matching.

(RefLink[Dimensions, paclet:ref/Dimensions]) gives the dimensions of a structured array.

The standard output format for a structured array indicates the structure type and the total dimensions.

(RefLink[StructuredArray, paclet:ref/StructuredArray]) objects are generated by array constructors such as (RefLink[SymmetrizedArray, paclet:ref/SymmetrizedArray]).

OpenersPrimaryExamplesSection(Spacer1)Examples  (3)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

Represent an array based on symmetries:

s = SymmetrizedArray[{{i_,i_,i_,i_}->1,{i_,i_,j_,j_}:> i+j},{4,4,4,4}, {Symmetric[{1,2,3,4}]}]

Convert it to the ordinary representation:

Normal[s]

Compare the memory required for the two representations:

ByteCount /@ {%, s}

OpenersExampleSection1(Spacer1)Scope  (1)

Represent an array based on symmetries:

s = SymmetrizedArray[{{i_,i_,i_}->1,{i_,j_,k_}:> x*(i+y*(j+ k))},{3,3,3}, Symmetric[{1,3}]]

Multiply each element of the array by 2:

s2 = 2 s

Add the two arrays:

s+s2

Subtract from 3s and convert to a sparse array:

SparseArray[3 s - %]

Differentiate the array with respect to x; the symmetry is preserved:

D[s,x]

Normal[%]

OpenersExampleSection3(Spacer1)Properties & Relations  (1)

Use (RefLink[MatrixForm, paclet:ref/MatrixForm]) and (RefLink[TableForm, paclet:ref/TableForm]) to display all the entries of a (RefLink[StructuredArray, paclet:ref/StructuredArray]):

sa=SymmetrizedArray[{{1,1}->a,{1,3}->b,{3,3}->c},{3,3},Symmetric[{1,2}]]

sa//MatrixForm

sa//TableForm

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[SymmetrizedArray, paclet:ref/SymmetrizedArray])  ▪  (RefLink[Normal, paclet:ref/Normal])  ▪  (RefLink[SparseArray, paclet:ref/SparseArray])  ▪  (RefLink[Array, paclet:ref/Array])  ▪  (RefLink[Dataset, paclet:ref/Dataset])}})}})