Threaded

Threaded[list]

是一个对象,当用于如 Plus 这样的可逐项作用于列表的元素的操作时,其元素将自动被 thread 到数组的最低层.

a+Threaded[b]

将数组 b 的元素与数组 a 的最低层的元素相加.

a+Threaded[b,alev]

aalev 层上的元素相加.

a+Threaded[b,blevalev]

aalev 层上的元素与 bblev 上的元素相加.

f[a,Threaded[b,]]

将函数 f 的元素与属性 Listable 组合在一起.

更多信息

  • a+Threaded[b] 中,a 的最低层的维度必须与 b 的维度匹配.
  • 对于具有 Listable 属性的函数 ff[a,b] 实际上从最上层开始向下将 f 应用于数组 ab 的元素. 使用 Threaded 可以控制元素在 a 中组合的方式.
  • 如果 a 的维度为 {adim1,,adimj}b 的维度为 {bdim1,,bdimi},则层与维度的对应关系如下所示:
  • f[a,Threaded[b]] 中,ab 应为矩形数组,且 ArrayDepth[a]ArrayDepth[b].
  • Threaded[b] 等价于 Threaded[b,1-ArrayDepth[b]]Threaded[b,-1-1]. »
  • Threaded[b,alev] 等价于 Threaded[b,1alev].
  • alev<0 时,f[a,Threaded[b,alev]] 等价于 f[a,Threaded[b,ArrayDepth[a]+alev+1].
  • alev<0时,f[a,Threaded[b,alev]] 等价于 Map[f[#,b]&,a,{alev-1}] .
  • 如果 alevblev 的正负号相同,则 f[Threaded[a,alev], Threaded[b,blev]] 给出标头为 Threaded 的结果.

范例

打开所有单元关闭所有单元

基本范例  (1)

{x,y} 与数据对列表的每个元素相加:

如果没有 Threaded,将标量列表与数据对列表相加将把标量与每个数据对的相加:

范围  (7)

创建一个维度为 {2,3,4} 的秩为 3 的数组:

将一个 3×4 的矩阵与数组中的两个矩阵相加:

创建一个维度为 {2,3,4,2} 的秩为 4 的数组:

将一个 3×4 的矩阵在最深层相加将会失败,因为 3×4 与 4×2 不一致:

可以在第 2 层相加,因为维度相匹配:

因为最深层数组的秩为 4,这与在 -3 层逐项运算一样:

将标量与 Threaded 参数组合给出 Threaded 结果:

这种运算满足结合律:

当所有参数都是 Threaded 对象时,则结果为单个 Threaded 对象:

对于深度为 4 的数组,比较对不同的正的层使用 Threaded 的结果:

对于深度为 4 的数组,比较对不同的负的层使用 Threaded 的结果:

Threaded 与任意可逐项作用的函数一起使用:

Threaded 参数可以以任何顺序出现:

ThreadedSparseArray 对象一起使用:

应用  (2)

将向量与矩阵的每一行相加:

将向量与矩阵的每一列相加:

将 3D 图像数据中的红色通道归零并将蓝色通道加倍:

同样的构造也适用于 2D 图像数据:

属性和关系  (8)

Threaded[y,] 保持不进行计算,除非是在具有 Listable 属性的封装标头内:

如果无法执行该操作,则会发出一条消息,并且 Threaded 将保持未计算的状态:

可逐项作用的函数 f 对数组 ab 的默认 threading 行为对应于 Threaded[b,1]

a 的第一层上 thread b 的第一层:

默认情况下,Threaded[b] 在可能的不改变 a 的深度的最低层上 thread b

这两种 thread 行为是不同的:

在最低层被 thread 的数组作为一个整体被复制,以便为计算创建一个足够深的数组:

如果在更高层上被 thread,则个别条目被复制以填充数组:

Threaded[b] 等价于 Threaded[b,-1-1]

也可以表示为 Threaded[b,1-ArrayDepth[b]]

对于可逐项作用的函数 f、数组 a 和向量 v,可用 Inner 重现 Threaded 的行为:

对于非默认的 thread 层,需要进行转置:

比较用 Threaded 和显式的 Tablea 的第一层 thread b 的第一层:

也可以通过使用两个转置来实现在非默认层 thread:

下面的置换将 a 的第 3 层和第 4 层移到第 1 层和第 2 层,而第 5 层保持不变:

如果 Quantity 具有 Listable 属性,则 QuantityArray[mags,units] 对应于 Quantity[mags,Threaded[units]]

Wolfram Research (2022),Threaded,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Threaded.html.

文本

Wolfram Research (2022),Threaded,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Threaded.html.

CMS

Wolfram 语言. 2022. "Threaded." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/Threaded.html.

APA

Wolfram 语言. (2022). Threaded. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Threaded.html 年

BibTeX

@misc{reference.wolfram_2024_threaded, author="Wolfram Research", title="{Threaded}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/Threaded.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_threaded, organization={Wolfram Research}, title={Threaded}, year={2022}, url={https://reference.wolfram.com/language/ref/Threaded.html}, note=[Accessed: 21-November-2024 ]}