Skip to content

Rank ​

The number of dimensions of an array: 0 for a scalar, 1 for a vector, 2 for a matrix.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageArrayDepth!
Rank(x)the length of the shape of x.
Typed signatures
TypePackageApplies
(value) -> integercombinatoricsreplaces compute-enginealways
(value) -> integercompute-enginealways

Domain: Linear algebra

Details
  • Tensor rank in the array sense — Wolfram's ArrayDepth, NumPy's ndim.
  • Not the rank of a matrix (its number of independent rows); that is MatrixRank.

Examples

Basic #
live ↗
InRank(5)\mathrm{Rank}(5)Out00
live ↗
InRank([1,2,3])\mathrm{Rank}(\bigl\lbrack1, 2, 3\bigr\rbrack)Out11
live ↗
InRank([[1,0],[0,1]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack1, 0\bigr\rbrack, \bigl\lbrack0, 1\bigr\rbrack\bigr\rbrack)Out22
live ↗
InRank([[[1,2],[3,4]],[[5,6],[7,8]]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack5, 6\bigr\rbrack, \bigl\lbrack7, 8\bigr\rbrack\bigr\rbrack\bigr\rbrack)Out33

Symbolic entries

live ↗
InRank([[a,b],[c,d]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d\bigr\rbrack\bigr\rbrack)Out22

A symbol is a scalar

live ↗
InRank(x)\mathrm{Rank}(x)Out00
Scope #

Rectangular arrays

live ↗
InRank([[1,2,3],[4,5,6]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack4, 5, 6\bigr\rbrack\bigr\rbrack)Out22
live ↗
InRank(IdentityMatrix(3))\mathrm{Rank}(\mathrm{IdentityMatrix}(3))Out22

A ragged list has depth 1 -- only its outer level is a full array

live ↗
InRank([[1,2],[3]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3\bigr\rbrack\bigr\rbrack)Out11

...likewise a list mixing scalars and lists

live ↗
InRank([1,[2,3]])\mathrm{Rank}(\bigl\lbrack1, \bigl\lbrack2, 3\bigr\rbrack\bigr\rbrack)Out11

The empty list is still a vector, of length 0

live ↗
InRank([])\mathrm{Rank}(\bigl\lbrack\bigr\rbrack)Out11

...and {{}}\{\{\}\} a 1×0 matrix

live ↗
InRank([[]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack\bigr\rbrack\bigr\rbrack)Out22

A 2×3 grid of unevaluated calls still reads as a matrix, from its dimensions alone

live ↗
InRank(Tabulate(f,2,3))\mathrm{Rank}(\mathrm{Tabulate}(f, 2, 3))Out22

A ragged list is only a vector of lists, so rank 11

live ↗
InRank([[a,b],[c]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c\bigr\rbrack\bigr\rbrack)Out11
Properties #

The length of the array's shape

live ↗
InRank([[[1,2],[3,4]],[[5,6],[7,8]]])=Length(Shape([[[1,2],[3,4]],[[5,6],[7,8]]]))\mathrm{Rank}(\bigl\lbrack\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack5, 6\bigr\rbrack, \bigl\lbrack7, 8\bigr\rbrack\bigr\rbrack\bigr\rbrack)=\mathrm{Length}(\mathrm{Shape}(\bigl\lbrack\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack3, 4\bigr\rbrack\bigr\rbrack, \bigl\lbrack\bigl\lbrack5, 6\bigr\rbrack, \bigl\lbrack7, 8\bigr\rbrack\bigr\rbrack\bigr\rbrack))OutTrue\mathrm{True}

Rank equals the length of the shape

live ↗
InRank([[a,b],[c,d]])=Length(Shape([[a,b],[c,d]]))\mathrm{Rank}(\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d\bigr\rbrack\bigr\rbrack)=\mathrm{Length}(\mathrm{Shape}(\bigl\lbrack\bigl\lbrack a, b\bigr\rbrack, \bigl\lbrack c, d\bigr\rbrack\bigr\rbrack))OutTrue\mathrm{True}

A scalar has rank 00

live ↗
InRank(1)\mathrm{Rank}(1)Out00

A flat list has rank 11

live ↗
InRank([1,2])\mathrm{Rank}(\bigl\lbrack1, 2\bigr\rbrack)Out11

One nested level gives rank 22

live ↗
InRank([[1,2]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack\bigr\rbrack)Out22

The rank of an array equals the number of dimensions given

live ↗
InRank(Array(a,[2,1,4,3]))=Length([2,1,4,3])\mathrm{Rank}(\mathrm{Array}(a, \bigl\lbrack2, 1, 4, 3\bigr\rbrack))=\mathrm{Length}(\bigl\lbrack2, 1, 4, 3\bigr\rbrack)OutTrue\mathrm{True}
Possible issues #

A singular 2×2 matrix still has Rank 2; its MatrixRank is 1

live ↗
InRank([[1,2],[2,4]])\mathrm{Rank}(\bigl\lbrack\bigl\lbrack1, 2\bigr\rbrack, \bigl\lbrack2, 4\bigr\rbrack\bigr\rbrack)Out22
live ↗
InRank(2)\mathrm{Rank}(\sqrt{2})Out00
About
Examples22
Checked againstWolfram Language 21 agree1 differ
CrosswalkWolfram Language