Dimensions[expr]
用来给出 expr 的维数列表.
Dimensions[expr,n]
用来给出 expr 的往下至层 n 的维数列表.
Dimensions
Dimensions[expr]
用来给出 expr 的维数列表.
Dimensions[expr,n]
用来给出 expr 的往下至层 n 的维数列表.
更多信息和选项
- expr 必须是一个完整的数组,即特定层上 expr 的每一块都有同样的长度.(expr 的元素则可被认为填满一个超矩形区域.)
- 对于特殊数组对象,如 SparseArray、NumericArray 和 QuantityArray,Dimensions 给出对应的普通列表的维度.
- 可给出以下选项:
-
AllowedHeads Automatic 允许数组的每一层有什么样的标头 - AllowedHeads 选项的设置包括:
-
Automatic 默认设置 Inherited 任何层都只允许有 Head[expr] h 任何层都只允许有标头 h {h1,…} 在不同的层允许有任一 h1,… h1|h2|… 在不同的层或相同的层允许有 hi All 在不同的层允许有任意标头 "ListLike" 允许 List 及相关的标头 Full 在任意层允许有任意标头 - 设置 AllowedHeads"ListLike" 允许由 ArrayQ 识别出的所有标头,其中包括 List、SparseArray 和结构化数组标头,如 QuantityArray 和 SymmetrizedArray.
- 采用默认设置 AllowedHeads->Automatic 时,expr 中相邻的层必须有相同的标头,而普通列表、稀疏数组和结构化数组被视为有相同的标头.
范例
打开所有单元 关闭所有单元范围 (5)
Dimensions 只统计不“规则”表达式的维数:
Dimensions[{{a, b, c}, {d, e}, {f}}]Dimensions 对于任意深度的数组起作用:
Dimensions[{{{{a, b}}}}]Dimensions[{{{{a, b}}}}, 2]Dimensions 适用于特殊数组类型,包括 SparseArray 对象:
SparseArray[{{{a, b}}}]Dimensions[%]SymmetrizedArray 对象:
SymmetrizedArray[{{1, 2} -> a, {2, 3} -> b}, {4, 4}, Symmetric[{1, 2}]]Dimensions[%]NumericArray 对象:
NumericArray[{{{1}, {2}}, {{3}, {4}}, {{5}, {6}}}, "UnsignedInteger8"]Dimensions[%]求矩阵的维度,该矩阵由 List 和不同的特殊数组标头混合而成:
Dimensions[{{1, 2}, SparseArray[{3, 4}], QuantityArray[{5, 6}, "Meters"]}]Dimensions 适用于任意标头,不只是 List:
Dimensions[f[f[x, y], f[a, b], f[s, t]]]选项 (4)
AllowedHeads (4)
只考虑标头为 List 的嵌套表达式:
Dimensions[f[f[1, 2, 3], f[4, 5, 6]], AllowedHeads -> List]Dimensions[f[f[1, 2, 3], f[4, 5, 6]]]Dimensions[{NumericArray[{1, 2, 3}, "Integer8"], NumericArray[{4, 5, 6}, "Integer8"]}, AllowedHeads -> {List, NumericArray}]Dimensions[{{1, 2, 3}, NumericArray[{4, 5, 6}, "Integer8"]}, AllowedHeads -> {List, NumericArray}]Dimensions[{{1, 2, 3}, NumericArray[{4, 5, 6}, "Integer8"]}, AllowedHeads -> List | NumericArray]允许 List 以及其他一般数组表示:
Dimensions[{SparseArray[{1, 2, 3}], SymmetrizedArray[{4, 5, 6}]}, AllowedHeads -> "ListLike"]只允许标头 List:
Dimensions[{SparseArray[{1, 2, 3}], SymmetrizedArray[{4, 5, 6}]}, AllowedHeads -> List]Dimensions[f[f[1, 2, 3], f[4, 5, 6]], AllowedHeads -> "ListLike"]Dimensions[f[f[1, 2, 3], f[4, 5, 6]], AllowedHeads -> List]Dimensions[f[g[1, 2, 3], g[4, 5, 6]], AllowedHeads -> All]Dimensions[f[g[1, 2, 3], h[4, 5, 6]], AllowedHeads -> All]Dimensions[f[g[1, 2, 3], h[4, 5, 6]], AllowedHeads -> Full]应用 (2)
创建一个 MatrixQ,只接受列表矩阵:
matrixQ[m_] := Length[Dimensions[m, AllowedHeads -> List]] === 2listMat = {{a, b}, {b, c}};
symmetrizedMat = SymmetrizedArray[listMat];
vector = {a, b};
scalar = Sin[x];函数 matrixQ 只对 listMat 给出 True,它既是一个矩阵,又有标头 List:
matrixQ /@ {listMat, symmetrizedMat, vector, scalar}MatrixQ /@ {listMat, symmetrizedMat, vector, scalar}Table[Dimensions[CellularAutomaton[n, {{1}, 0}, 10]], {n, 20}]属性和关系 (7)
Dimensions 总是返回一个列表:
Dimensions[1]Dimensions[{1, 2}]Dimensions[{{1, 2}}]选项 AllowedHeads 的默认值允许列表、稀疏数组、结构化数组混合出现:
listArray = {{1, 2}, SparseArray[{3, 4}], QuantityArray[{5, 6}, "Meters"]};
Dimensions[listArray]fArray = f[f[1, 2], f[3, 4], f[5, 6]];
Dimensions[fArray]用 AllowedHeads"ListLike" 允许任何类似列表的数组,同时排除其他标头:
Dimensions[listArray, AllowedHeads -> "ListLike"]Dimensions[fArray, AllowedHeads -> "ListLike"]VectorQ、MatrixQ 和 ArrayQ 实际上使用 AllowedHeads"ListLike":
sparse = SparseArray[{1, 2}];quant = QuantityArray[{1, 2}, "Meters"];{VectorQ[sparse], Dimensions[sparse, AllowedHeads -> "ListLike"]}{ArrayQ[quant], Dimensions[quant, AllowedHeads -> "ListLike"]}{MatrixQ[{sparse, quant}], Dimensions[{sparse, quant}, AllowedHeads -> "ListLike"]}设置 AllowedHeads"ListLike" 不包括 ByteArray 和 NumericArray:
list = {ByteArray[{1, 2, 3}], NumericArray[{1., 2., 3.}, "Real64"]};Dimensions[list, AllowedHeads -> "ListLike"]Dimensions[list, AllowedHeads -> "ListLike" | ByteArray | NumericArray]Length[Dimensions[expr]] 等于 ArrayDepth[expr]:
Length[Dimensions[{{a, b}, {c, d}}]] == ArrayDepth[{{a, b}, {c, d}}]Dimensions[Array[h,dims]] 给出 dims:
Dimensions[Array[a, {2, 1, 4, 3}]]如果 Dimensions[expr] 非空,则它的第一个元素等于 Length[expr]:
mat = {{1, 2, 3}, {4, 5, 6}}First[Dimensions[mat]] == Length[mat]可能存在的问题 (1)
根据数值表达式的 FullForm 结构报告维数:
FullForm[Sqrt[2]]Dimensions[Sqrt[2]]如果想要将所有数值表达式视为标量,对 AllowedHeads 使用设置 List 或 "ListLike":
Dimensions[Sqrt[2], AllowedHeads -> List]相关指南
-
▪
- 子矩阵 ▪
- 张量 ▪
- 矩阵和线性代数 ▪
- 大型数组的处理 ▪
- 列表元素 ▪
- 正则和坐标数组 ▪
- GPU 计算 ▪
- NVIDIA GPU 计算 ▪
- Apple GPU 计算
历史
1988年引入 (1.0) | 在以下年份被更新:2003 (5.0) ▪ 2012 (9.0) ▪ 2019 (12.0) ▪ 2020 (12.1)
文本
Wolfram Research (1988),Dimensions,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Dimensions.html (更新于 2020 年).
CMS
Wolfram 语言. 1988. "Dimensions." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/Dimensions.html.
APA
Wolfram 语言. (1988). Dimensions. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Dimensions.html 年
BibTeX
@misc{reference.wolfram_2026_dimensions, author="Wolfram Research", title="{Dimensions}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/Dimensions.html}", note=[Accessed: 11-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_dimensions, organization={Wolfram Research}, title={Dimensions}, year={2020}, url={https://reference.wolfram.com/language/ref/Dimensions.html}, note=[Accessed: 11-September-2026]}