ArrayQ
更多信息
- 在一个完整数组中,某个特定层的所有部分必须是同一长度的列表,尽管不同部分可能使用不同的列表表示形式.
- 完整数组也称为矩形数组.
- 数组可能的表示形式包括: »
-
{…} 或 List[…]、{{…},{…},…} 等 普通列表,可能是嵌套列表 SparseArray[…] 稀疏数组 TabularColumn[…], PermutationMatrix[…], QuantityArray[…], SymmetrizedArray[…], etc. 结构化数组 {a1,a2,…},其中 ArrayQ[ai] 为 True 普通数组、稀疏数组和/或结构化数组列表 » - ArrayQ[expr,1|2] 测试 expr 是向量还是矩阵. »
- 空列表 {} 是长度为零的向量. »
- 在 ArrayQ[expr,patt,test] 中,常见的用于数值数组的 test 包括:
-
NumberQ 测试 expr 是否为显式数字数组 NumericQ 测试 expr 是否为数值表达式数组 Positive 测试 expr 是否为正数数组 RealValuedNumberQ 测试 expr 是否是标头为 Integer、Rational 或 Real 的数字数组 RealValuedNumericQ 测试 expr 是否为具有实数值的数值表达式数组 - 常用的结构测试包括:
-
IntegerQ 测试 expr 是否为整数数组 PolynomialQ[#,x]& 测试 expr 是否为关于 x 的多项式数组 QuantityQ 测试 expr 是否为量组成的数组 StringQ 测试 expr 是否为字符串数组
范例
打开所有单元 关闭所有单元基本范例 (2)
范围 (11)
ArrayQ[SparseArray[{{1, 3} -> a, {5, 1} -> b}]]ArrayQ[TabularColumn[{1, 2, 3}, "Integer8"]]ArrayQ[SymmetrizedArray[{1, 2, 3} -> 1, {3, 3, 3}, Antisymmetric[All]]]ArrayQ[{1, 2, 3, 4}, 1]ArrayQ[{{1, 2}, {3, 4}}, 1]ArrayQ[{1, 2, 3, 4}, 2]ArrayQ[{{1, 2}, {3, 4}}, 2]ArrayQ[{1, 2, 3, 4}, 1 | 2]ArrayQ[{{1, 2}, {3, 4}}, 1 | 2]mat = {{1, 2, 3}, SparseArray[Automatic, {3}, 0, {1, {{0, 1}, {{3}}}, {a}}], TabularColumn[{4, 5, 6}, "Integer64"]};
ArrayQ[mat]ArrayQ[mat, 2]arr = {mat, SymmetrizedArray[{{1, 2} -> b, {3, 3} -> d}, {3, 3}, Symmetric[{1, 2}]]}ArrayQ[arr, 3]arr//MatrixFormArrayQ[{1, 2, 3, x}, 1, NumericQ]ArrayQ[{{{E, 1}, {Pi, 2}}, {{Sin[1], Cos[2]}, {Sinh[1], Cosh[1]}}}, _, NumericQ]ArrayQ[{{{E, 1}, {Pi, 2}}, {{Sin[1], Cos[2]}, {Sinh[1], Cosh[1]}}}, _, NumberQ]ArrayQ[{1, Pi, Sin[1], Sqrt[2]}, 1, RealValuedNumericQ]ArrayQ[{1, Pi, Sin[1], 3 / 4}, 1, RealValuedNumberQ]测试一个深度为奇数的数组,其中包含四舍五入到两位小数后为整数的数字:
ArrayQ[{1, 1.005, 1.997}, _ ? OddQ, Abs[# - Round[#]] < 0.005&]ArrayQ[{{"a", "b"}, {"c", "d"}}, 2, StringQ]ArrayQ[{{"a", "b"}, {c, d}}, 2, StringQ]ArrayQ[{1, x, 1 + x, x ^ 2 + 2x + 1}, 1 | 2, PolynomialQ[#, x]&]ArrayQ[{1, x, Sin[x], Exp[x]}, 1 | 2, PolynomialQ[#, x]&]应用 (1)
iptp[a_ ? ArrayQ, x_] := Module[{n, at = a},
n = ArrayDepth[a];
Do[
at = Transpose[at, RotateRight[Range[ArrayDepth[at]]]];
at = Map[InterpolatingPolynomial[#, Subscript[x, i]]&, at, {n - i}],
{i, n}];
at]data = {{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}, {{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}};
poly = iptp[data, x]pos = Position[data, _ ? NumberQ];
poly /. Map[Thread[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]} -> #]&, pos]% === Extract[data, pos]属性和关系 (5)
ArrayQ[{}, 1]VectorQ[expr] 等价于 ArrayQ[expr,1]:
v = {1, 2., E, Pi + I};{VectorQ[v], ArrayQ[v, 1]}VectorQ[expr,test] 等价于 ArrayQ[expr,1,test]:
{VectorQ[v, NumericQ], ArrayQ[v, 1, NumericQ]}{VectorQ[v, Im[#] == 0&], ArrayQ[v, 1, Im[#] == 0&]}MatrixQ[expr] 等价于 ArrayQ[expr,2]:
m = RandomReal[1, {2, 2}]{ArrayQ[m, 2], MatrixQ[m]}MatrixQ[expr] 等价于 ArrayQ[expr,2]:
{ArrayQ[m, 2, MachineNumberQ], MatrixQ[m, MachineNumberQ]}{ArrayQ[m, 2, IntegerQ], MatrixQ[m, IntegerQ]}对于一个深度为 3 的数组 arr,VectorQ[arr,MatrixQ] 和 MatrixQ[arr,VectorQ] 都会返回 True:
arr = Array[a, {2, 3, 4}];
{ArrayQ[arr, 3], VectorQ[arr, MatrixQ], MatrixQ[arr, VectorQ]}该陈述的逆命题为 False:
narr = {Array[a, {3, 4}], Array[a, {3, 5}]};
{ArrayQ[narr, 4], VectorQ[narr, MatrixQ], MatrixQ[narr, VectorQ]}ArrayQ 有效使用 AllowedHeads"ListLike":
mat = {SparseArray[{1, 2}], QuantityArray[{1, 2}, "Meters"]};
expr = f[f[1, 2], f[3, 4]];{ArrayQ[mat], ArrayQ[expr]}{ArrayDepth[mat, AllowedHeads -> "ListLike"], ArrayDepth[expr, AllowedHeads -> "ListLike"]}{Dimensions[mat, AllowedHeads -> "ListLike"], Dimensions[expr, AllowedHeads -> "ListLike"]}相关指南
-
▪
- 张量 ▪
- 表达式测试 ▪
- GPU 计算 ▪
- 列表元素 ▪
- NVIDIA GPU 计算 ▪
- Apple GPU 计算
历史
2003年引入 (5.0) | 在以下年份被更新:2012 (9.0)
文本
Wolfram Research (2003),ArrayQ,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ArrayQ.html (更新于 2012 年).
CMS
Wolfram 语言. 2003. "ArrayQ." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2012. https://reference.wolfram.com/language/ref/ArrayQ.html.
APA
Wolfram 语言. (2003). ArrayQ. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ArrayQ.html 年
BibTeX
@misc{reference.wolfram_2026_arrayq, author="Wolfram Research", title="{ArrayQ}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/ArrayQ.html}", note=[Accessed: 18-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_arrayq, organization={Wolfram Research}, title={ArrayQ}, year={2012}, url={https://reference.wolfram.com/language/ref/ArrayQ.html}, note=[Accessed: 18-August-2026]}