TensorRank[tensor]
gives the rank of tensor.
TensorRank
TensorRank[tensor]
gives the rank of tensor.
Details and Options
- TensorRank accepts any type of tensor, either symbolic or explicit, including any type of array.
- On explicit rectangular arrays of scalars, TensorRank coincides with ArrayDepth. On symbolic arrays, TensorRank stays unevaluated unless the array has been assigned a rank through any form of assumption.
- TensorRank takes the following options:
-
Assumptions $Assumptions assumptions on parameters GenerateConditions False whether to generate answers that involve conditions on parameters
Examples
open all close allBasic Examples (4)
Scope (4)
Rank or depth of explicit arrays:
A = Array[a, {2, 3, 4}];
TensorRank[A]A = SparseArray[{{1, 2, 3} -> a}, {2, 3, 4}];
TensorRank[A]A = SymmetrizedArray[pos_ :> a, {4, 4, 4}, Symmetric[All]];
TensorRank[A]$Assumptions = {
A∈Arrays[{4, 4, 5, 5}, Reals, Symmetric[{1, 2}]],
M∈Matrices[{3, 4}, Reals],
V∈Vectors[5, Reals]
};TensorRank[A]TensorRank[M]TensorRank[V]Rank of vector, matrix, and array symbols:
TensorRank[VectorSymbol["v", n]]TensorRank[MatrixSymbol["m", {5, 7}]]TensorRank[ArraySymbol["a", {p, q, r, s}]]Rank of general tensor expressions:
TensorRank[abc]TensorRank[TensorContract[a, {{1, 5}, {2, 3}}]]TensorRank[TensorTranspose[a, {3, 4, 1, 2}]]Options (2)
Assumptions (1)
GenerateConditions (1)
By default, TensorRank quietly makes assumptions necessary for the input to be well-defined:
a = MatrixSymbol["a", {m, n}];
b = MatrixSymbol["b", {p, q}];
TensorRank[a + b]With GenerateConditionsTrue, TensorRank gives a conditional result:
TensorRank[a + b, GenerateConditions -> True]With GenerateConditionsNone, TensorRank fails when assumptions are necessary:
TensorRank[a + b, GenerateConditions -> None]Properties & Relations (2)
On explicit arrays, TensorRank coincides with ArrayDepth:
A = Array[a, {2, 3, 4}];
{TensorRank[A], ArrayDepth[A]}A = SparseArray[{{1, 2, 3} -> a}, {2, 3, 4}];
{TensorRank[A], ArrayDepth[A]}A = SymmetrizedArray[pos_ :> a, {4, 4, 4}, Symmetric[All]];
{TensorRank[A], ArrayDepth[A]}For symbolic expressions, there is no default rank assumed:
TensorRank[A]Use assumptions to assign a rank to the array:
Assuming[A∈Arrays[{3, 4, d, d}], TensorRank[A]]$Assumptions = A∈Arrays[{3, 4, 5}];
TensorRank[A]Possible Issues (3)
TensorRank can obtain some information contextually. Expressions without tensor properties inside numeric functions, arrays, or derivatives are considered scalars:
TensorRank[x]TensorRank[1 / x]TensorRank[{x}]Grad[x, {a, b}]It is not possible to mix incompatible local and global assumptions:
$Assumptions = A∈Arrays[{2, 2, 2, 2}];Assuming[A∈Arrays[{2, 2}], TensorRank[A]]TensorRank does not check for dimensions homogeneity, only rank homogeneity:
$Assumptions = {v∈Vectors[2], w∈Vectors[3]};TensorRank[v + w]TensorDimensions[v + w]With GenerateConditionsTrue, TensorRank checks for dimensions homogeneity:
TensorDimensions[v + w, GenerateConditions -> True]Tech Notes
Related Guides
Related Links
Text
Wolfram Research (2012), TensorRank, Wolfram Language function, https://reference.wolfram.com/language/ref/TensorRank.html (updated 2024).
CMS
Wolfram Language. 2012. "TensorRank." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/TensorRank.html.
APA
Wolfram Language. (2012). TensorRank. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TensorRank.html
BibTeX
@misc{reference.wolfram_2026_tensorrank, author="Wolfram Research", title="{TensorRank}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/TensorRank.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_tensorrank, organization={Wolfram Research}, title={TensorRank}, year={2024}, url={https://reference.wolfram.com/language/ref/TensorRank.html}, note=[Accessed: 13-June-2026]}