给出一个稀疏数组中指定元素的规则 {pos1val1,pos2val2,…}.
ArrayRules[list]
给出 SparseArray[list] 的规则.
ArrayRules
给出一个稀疏数组中指定元素的规则 {pos1val1,pos2val2,…}.
ArrayRules[list]
给出 SparseArray[list] 的规则.
更多信息
- ArrayRules[s] 的最后元素恒为 {_,_,…}->def,其中 def 是在稀疏数组中未指定元素的缺省值. »
- ArrayRules[list,val] 设置缺省值为 val. »
- ArrayRules[list] 假定缺省值为 0. »
范例
打开所有单元 关闭所有单元基本范例 (1)
获得一个 SparseArray 中的明确的元素:
s = SparseArray[{{i_, j_} /; Abs[i - j] ≤ 1 -> -2 + 3Abs[i - j]}, {5, 5}]ar = ArrayRules[s]这些规则足以有效构造一个相同的 SparseArray:
s2 = SparseArray[ar]s === s2范围 (2)
ArrayRules[s] 的最后元素恒为 {_,_,…}->def:
m = RandomInteger[2, {3, 3}]缺省值为 2 的一个 SparseArray:
s2 = SparseArray[m, Automatic, 2]ar2 = ArrayRules[s2]ar1 = ArrayRules[s2, 1]这将构造一个和 SparseArray[m,Automatic,1] 相同的 SparseArray:
SparseArray[ar1, {3, 3}] === SparseArray[m, Automatic, 1]a = RandomInteger[1, {2, 2, 2}]ArrayRules[a]这些将构造一个与 SparseArray[a] 相同的 SparseArray:
SparseArray[%, {2, 2, 2}] === SparseArray[a]ArrayRules[a, 1]这将构造一个和 SparseArray[a,Automatic,1] 相同的 SparseArray:
SparseArray[%, {2, 2, 2}] === SparseArray[a, Automatic, 1]应用 (4)
获得一个 SparseArray 中给定元素的数量:
s = SparseArray[RandomChoice[{100, 1} -> {0, 1}, 1000]]Length[ArrayRules[s]] - 1SeedRandom[1234];s = SparseArray[RandomInteger[{1, 9}, {19, 2}] -> RandomInteger[{-9, 9}, 19], {9, 9}]注意更复杂的模式,因为 Cases 对 Rule 具有特殊作用:
Cases[ArrayRules[s], (r : (_ -> x_ /; Positive[x])) -> r]带有正值和负值的 SparseArray 对象:
spos = SparseArray[%, Dimensions[s]]sneg = SparseArray[Cases[ArrayRules[s], (r : (_ -> x_ /; Negative[x])) -> r], Dimensions[s]]s = SparseArray[{{1, -2, 1, 0, 0}, {0, 1, -2, 1, 0}, {0, 0, 1, -2, 1}, {0, 0, 0, 1, -2}, {-2, -3, -4, -5, -6}}]upperrules = Cases[ArrayRules[s], (r : ({i_, j_} /; i ≤ j -> _)) -> r]u = SparseArray[upperrules, Dimensions[s]]lowerrules = Cases[ArrayRules[s], (r : ({i_, j_} /; i > j -> _)) -> r];
l = SparseArray[Append[lowerrules, {i_, i_} -> 1], Dimensions[s]]MatrixForm[(l.u)[[{5, 1, 2, 3, 4}]]]绘制一个图形,在 SparseArray 的给定元素位置上显示提示工具栏:
s = SparseArray[{{i_, i_} -> 1 / i, {i_, j_} /; Mod[i + 2 j, 4] == 0 -> 1 / (i + j)}, {10, 10}]ListPlot[Apply[Tooltip, Drop[ArrayRules[s], -1], {1}], AspectRatio -> 1, PlotStyle -> PointSize[1 / 10], PlotMarkers -> {"■"}]MatrixPlot 绘制的图形一般具有较好的视觉效果:
MatrixPlot[s]属性和关系 (2)
对于一个 SparseArray s , SparseArray[ArrayRules[s],Dimensions[s]] 与 s 相同:
s = SparseArray[RandomInteger[{1, 9}, {5, 2}] :> RandomInteger[{-9, 9}], {10, 10}]ar = ArrayRules[s]s === SparseArray[ar, Dimensions[s]]{Max[ar[[1 ;; -2, 1, 1]]], Max[ar[[1 ;; -2, 1, 2]]]}SparseArray[ar]对于一个给定的数组, ArrayRules 可以按照 Position 输出:
par[list_ ? ArrayQ, def_ : 0] := Module[{n = ArrayDepth[list], pos}, pos = Position[list, x_ /; x ≠ def, {n}];
Append[Thread[pos -> Extract[list, pos]], Table[_, {n}] -> def]]a = RandomInteger[1, {2, 3}]par[a]% === ArrayRules[a]par[a, 1] === ArrayRules[a, 1]它对 SparseArray 对象不起作用, 因为模式匹配对 FullForm 起作用:
Position[SparseArray[a], x_ /; x ≠ 0, {ArrayDepth[a]}]FullForm[SparseArray[a]]技术笔记
-
▪
- 获取矩阵元素 ▪
- 稀疏数组:列表的处理 ▪
- 稀疏数组:线性代数
历史
2003年引入 (5.0)
文本
Wolfram Research (2003),ArrayRules,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ArrayRules.html.
CMS
Wolfram 语言. 2003. "ArrayRules." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/ArrayRules.html.
APA
Wolfram 语言. (2003). ArrayRules. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ArrayRules.html 年
BibTeX
@misc{reference.wolfram_2026_arrayrules, author="Wolfram Research", title="{ArrayRules}", year="2003", howpublished="\url{https://reference.wolfram.com/language/ref/ArrayRules.html}", note=[Accessed: 18-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_arrayrules, organization={Wolfram Research}, title={ArrayRules}, year={2003}, url={https://reference.wolfram.com/language/ref/ArrayRules.html}, note=[Accessed: 18-August-2026]}