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

标签 arrays julia elementwise-operations

我是 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/

相关文章:

c - 将 2D 数组传递给函数时出现段错误

julia - 如何在 Julia 中使用向量作为类型参数

python - Pytorch批量矩阵-矩阵外积

python - 比较数组并添加到不同的元素?

Java 数组填充和值打印。但是,内存总是在之后打印

arrays - 矩阵中的累积和

julia - 快速计算sum_i f(i)x(i)x(i)'?

list - 数学: adding a list of lists elementwise

javascript - 当数组元素中的逗号不会影响数组的长度时

julia - 重新加载模块/文件和任务问题