Skip to content

Array ​

f applied over every point of an n-dimensional index range.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageArray✓
Array(f, n){f(1),…,f(n)}\{f(1), \ldots, f(n)\}.
Array(f, {n1, …, nk})the n1×⋯×nkn_1 \times \cdots \times n_k array with ff applied to every index tuple.
Array(f, n, r)like Array(f,n)Array(f, n), but the index range starts at rr instead of 1.
Array(f, {n1, …, nk}, {r1, …, rk})like the multi-dimensional form, with each dimension's index range starting at its own origin.
Array(f, n, r, h)like Array(f,n,r)Array(f, n, r), wrapped in hh at every level instead of ListList.
Typed signatures
TypePackageApplies
((integer*) any -> any, any, any?, symbol?) -> collectioncombinatoricsalways

Domain: Collections

Details
  • The scalar forms of nn and rr are shorthand for {n}\{n\} and every dimension sharing origin rr.
  • See Tabulate for a lazy array read without materialising it.

Examples

1 more kept as data, checked against the oracles
Basic #
live ↗
InArray(f,5)\mathrm{Array}(f, 5)Out[f(1),f(2),f(3),f(4),f(5)]\bigl\lbrack f(1), f(2), f(3), f(4), f(5)\bigr\rbrack
live ↗
InArray(_1⁡↦_1⁡2,5)\mathrm{Array}(\operatorname{\_1}↦\operatorname{\_1}^2, 5)Out[1,4,9,16,25]\bigl\lbrack1, 4, 9, 16, 25\bigr\rbrack

Applies ff to the indices 1..101..10

live ↗
InArray(f,10)\mathrm{Array}(f, 10)Out[f(1),f(2),f(3),f(4),f(5),f(6),f(7),f(8),f(9),f(10)]\bigl\lbrack f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10)\bigr\rbrack

A list of dimensions builds a nested array of two-index calls

live ↗
InArray(f,[3,2])\mathrm{Array}(f, \bigl\lbrack3, 2\bigr\rbrack)Out[[f(1,1),f(1,2)],[f(2,1),f(2,2)],[f(3,1),f(3,2)]]\bigl\lbrack\bigl\lbrack f(1, 1), f(1, 2)\bigr\rbrack, \bigl\lbrack f(2, 1), f(2, 2)\bigr\rbrack, \bigl\lbrack f(3, 1), f(3, 2)\bigr\rbrack\bigr\rbrack

A third argument shifts the starting index to 00

live ↗
InArray(f,10,0)\mathrm{Array}(f, 10, 0)Out[f(0),f(1),f(2),f(3),f(4),f(5),f(6),f(7),f(8),f(9)]\bigl\lbrack f(0), f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9)\bigr\rbrack

Origins can differ per dimension

live ↗
InArray(f,[2,3],[0,4])\mathrm{Array}(f, \bigl\lbrack2, 3\bigr\rbrack, \bigl\lbrack0, 4\bigr\rbrack)Out[[f(0,4),f(0,5),f(0,6)],[f(1,4),f(1,5),f(1,6)]]\bigl\lbrack\bigl\lbrack f(0, 4), f(0, 5), f(0, 6)\bigr\rbrack, \bigl\lbrack f(1, 4), f(1, 5), f(1, 6)\bigr\rbrack\bigr\rbrack

A pure function gives the values k2+1k^2+1

live ↗
InArray(_1⁡↦_1⁡2+1,10)\mathrm{Array}(\operatorname{\_1}↦\operatorname{\_1}^2+1, 10)Out[2,5,10,17,26,37,50,65,82,101]\bigl\lbrack2, 5, 10, 17, 26, 37, 50, 65, 82, 101\bigr\rbrack

A two-argument function encodes row and column in the digits

live ↗
InArray((_1⁡,_2⁡)↦10_1⁡+_2⁡,[3,4])\mathrm{Array}((\operatorname{\_1}, \operatorname{\_2})↦10\operatorname{\_1}+\operatorname{\_2}, \bigl\lbrack3, 4\bigr\rbrack)Out[[11,12,13,14],[21,22,23,24],[31,32,33,34]]\bigl\lbrack\bigl\lbrack11, 12, 13, 14\bigr\rbrack, \bigl\lbrack21, 22, 23, 24\bigr\rbrack, \bigl\lbrack31, 32, 33, 34\bigr\rbrack\bigr\rbrack
Scope #

A list of dimensions builds a multi-dimensional array

live ↗
InArray(f,[2,2])\mathrm{Array}(f, \bigl\lbrack2, 2\bigr\rbrack)Out[[f(1,1),f(1,2)],[f(2,1),f(2,2)]]\bigl\lbrack\bigl\lbrack f(1, 1), f(1, 2)\bigr\rbrack, \bigl\lbrack f(2, 1), f(2, 2)\bigr\rbrack\bigr\rbrack

A third argument pins where the index range starts

live ↗
InArray(f,3,0)\mathrm{Array}(f, 3, 0)Out[f(0),f(1),f(2)]\bigl\lbrack f(0), f(1), f(2)\bigr\rbrack

A fourth argument wraps the result in that head instead of List

live ↗
InArray(f,3,1,g)\mathrm{Array}(f, 3, 1, g)Outg(f(1),f(2),f(3))g(f(1), f(2), f(3))

An undefined head stays symbolic

live ↗
InArray(a,[3,2])\mathrm{Array}(a, \bigl\lbrack3, 2\bigr\rbrack)Out[[a(1,1),a(1,2)],[a(2,1),a(2,2)],[a(3,1),a(3,2)]]\bigl\lbrack\bigl\lbrack a(1, 1), a(1, 2)\bigr\rbrack, \bigl\lbrack a(2, 1), a(2, 2)\bigr\rbrack, \bigl\lbrack a(3, 1), a(3, 2)\bigr\rbrack\bigr\rbrack

Three dimensions, each with its own origin including negatives

live ↗
InArray(f,[4,3,2],[0,−1,−2])\mathrm{Array}(f, \bigl\lbrack4, 3, 2\bigr\rbrack, \bigl\lbrack0, -1, -2\bigr\rbrack)Out[[[f(0,−1,−2),f(0,−1,−1)],[f(0,0,−2),f(0,0,−1)],[f(0,1,−2),f(0,1,−1)]],[[f(1,−1,−2),f(1,−1,−1)],[f(1,0,−2),f(1,0,−1)],[f(1,1,−2),f(1,1,−1)]],[[f(2,−1,−2),f(2,−1,−1)],[f(2,0,−2),f(2,0,−1)],[f(2,1,−2),f(2,1,−1)]],[[f(3,−1,−2),f(3,−1,−1)],[f(3,0,−2),f(3,0,−1)],[f(3,1,−2),f(3,1,−1)]]]\bigl\lbrack\bigl\lbrack\bigl\lbrack f(0, -1, -2), f(0, -1, -1)\bigr\rbrack, \bigl\lbrack f(0, 0, -2), f(0, 0, -1)\bigr\rbrack, \bigl\lbrack f(0, 1, -2), f(0, 1, -1)\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack f(1, -1, -2), f(1, -1, -1)\bigr\rbrack, \bigl\lbrack f(1, 0, -2), f(1, 0, -1)\bigr\rbrack, \bigl\lbrack f(1, 1, -2), f(1, 1, -1)\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack f(2, -1, -2), f(2, -1, -1)\bigr\rbrack, \bigl\lbrack f(2, 0, -2), f(2, 0, -1)\bigr\rbrack, \bigl\lbrack f(2, 1, -2), f(2, 1, -1)\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack f(3, -1, -2), f(3, -1, -1)\bigr\rbrack, \bigl\lbrack f(3, 0, -2), f(3, 0, -1)\bigr\rbrack, \bigl\lbrack f(3, 1, -2), f(3, 1, -1)\bigr\rbrack\bigr\rbrack\bigr\rbrack

A fourth argument heads each level, here gg around rows and then the whole

live ↗
InArray(f,[3,3],1,g)\mathrm{Array}(f, \bigl\lbrack3, 3\bigr\rbrack, 1, g)Outg(g(f(1,1),f(1,2),f(1,3)),g(f(2,1),f(2,2),f(2,3)),g(f(3,1),f(3,2),f(3,3)))g(g(f(1, 1), f(1, 2), f(1, 3)), g(f(2, 1), f(2, 2), f(2, 3)), g(f(3, 1), f(3, 2), f(3, 3)))

The Hilbert matrix with entries 1i+j−1\frac1{i+j-1}

live ↗
InArray((_1⁡,_2⁡)↦1_1⁡+_2⁡−1,[3,3])\mathrm{Array}((\operatorname{\_1}, \operatorname{\_2})↦\frac{1}{\operatorname{\_1}+\operatorname{\_2}-1}, \bigl\lbrack3, 3\bigr\rbrack)Out[[1,12,13],[12,13,14],[13,14,15]]\bigl\lbrack\bigl\lbrack1, \frac{1}{2}, \frac{1}{3}\bigr\rbrack, \bigl\lbrack\frac{1}{2}, \frac{1}{3}, \frac{1}{4}\bigr\rbrack, \bigl\lbrack\frac{1}{3}, \frac{1}{4}, \frac{1}{5}\bigr\rbrack\bigr\rbrack

A constant function fills the grid

live ↗
InArray(()↦x,[5,5])\mathrm{Array}(()↦x, \bigl\lbrack5, 5\bigr\rbrack)Out[[x,x,x,x,x],[x,x,x,x,x],[x,x,x,x,x],[x,x,x,x,x],[x,x,x,x,x]]\bigl\lbrack\bigl\lbrack x, x, x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x, x\bigr\rbrack\bigr\rbrack

Argument order is bound by the function's parameters, same Hilbert matrix

live ↗
InArray((k,j)↦1j+k−1,[3,3])\mathrm{Array}((k, j)↦\frac{1}{j+k-1}, \bigl\lbrack3, 3\bigr\rbrack)Out[[1,12,13],[12,13,14],[13,14,15]]\bigl\lbrack\bigl\lbrack1, \frac{1}{2}, \frac{1}{3}\bigr\rbrack, \bigl\lbrack\frac{1}{2}, \frac{1}{3}, \frac{1}{4}\bigr\rbrack, \bigl\lbrack\frac{1}{3}, \frac{1}{4}, \frac{1}{5}\bigr\rbrack\bigr\rbrack
Neat examples #

A table of powers iji^j

live ↗
InArray(Power,[5,5])\mathrm{Array}(\mathrm{Power}, \bigl\lbrack5, 5\bigr\rbrack)Out[[1,1,1,1,1],[2,4,8,16,32],[3,9,27,81,243],[4,16,64,256,1 024],[5,25,125,625,3 125]]\bigl\lbrack\bigl\lbrack1, 1, 1, 1, 1\bigr\rbrack, \bigl\lbrack2, 4, 8, 16, 32\bigr\rbrack, \bigl\lbrack3, 9, 27, 81, 243\bigr\rbrack, \bigl\lbrack4, 16, 64, 256, 1\,024\bigr\rbrack, \bigl\lbrack5, 25, 125, 625, 3\,125\bigr\rbrack\bigr\rbrack

A triangular shape from rows of growing length

live ↗
InArray(_1⁡↦Array(()↦x,_1⁡),[6])\mathrm{Array}(\operatorname{\_1}↦\mathrm{Array}(()↦x, \operatorname{\_1}), \bigl\lbrack6\bigr\rbrack)Out[[x],[x,x],[x,x,x],[x,x,x,x],[x,x,x,x,x],[x,x,x,x,x,x]]\bigl\lbrack\bigl\lbrack x\bigr\rbrack, \bigl\lbrack x, x\bigr\rbrack, \bigl\lbrack x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x, x\bigr\rbrack, \bigl\lbrack x, x, x, x, x, x\bigr\rbrack\bigr\rbrack
About
Examples20
Checked againstWolfram Language 19 agree
CrosswalkWolfram Language

See also: Tabulate