gpt4 book ai didi

arrays - Julia 中数组数组的逐元素操作

转载 作者:行者123 更新时间:2023-12-05 04:28:07 26 4
gpt4 key购买 nike

我是 Julia 的新手,我正在尝试从 Mathematica 中的现有代码迁移。我想做的是:用一个向量数组,从中减去一个常量向量。这是我想要的:

a=[[1, 2], [1, 3]]

println(a)

b=a.-[1,1]

println(b)

我想要 b=[[0,1],[0,2]] 但它给我关于维度不匹配的错误。对于 Julia 中“向量列表”和“矩阵”之间的区别,我有点不知所措。我不确定做这两种不同的事情的正确方法是什么。

然后我尝试广播,但它也不起作用

a=([1, 2], [1, 3])

println(a)

b=broadcast(-,[1,1],a)

println(b)

最后,我试过了

a=([1, 2], [1, 3])

println(a)

b=a.-([1,1],)

println(b)

它奏效了。

我的问题:为什么前两个不起作用?这是一个 hack walkaround 还是我应该在未来使用它?

最佳答案

您需要使用 Ref 来避免对差异的第二个参数进行矢量化:

julia> a .- Ref([1,1])
2-element Vector{Vector{Int64}}:
[0, 1]
[0, 2]

如果没有它,您将迭代 a 的元素以及 [1, 1] 的元素,最终计算出向量和标量之间的非向量化差异,因此它没有用。

关于arrays - Julia 中数组数组的逐元素操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72669827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com