gpt4 book ai didi

julia - 如何通过 TensorCast.jl 执行 reduce(hcat, )?

转载 作者:行者123 更新时间:2023-12-05 03:16:45 33 4
gpt4 key购买 nike

是否可以执行以下操作 via TensorCast.jl还有吗?

#This is an object of type Vector{Vector{Float64}}
julia> a = [rand(5) for i=1:5];

julia> reduce(hcat, a)
5×5 Matrix{Float64}:
0.0678613 0.266194 0.183221 0.485462 0.873282
0.735101 0.925276 0.956102 0.333281 0.885147
0.323555 0.74204 0.135538 0.26123 0.261068
0.81847 0.917006 0.0118195 0.295497 0.712431
0.420139 0.0197552 0.0617039 0.157477 0.500931

我猜我尝试了一些非常愚蠢的事情 (😰):

julia> @reduce b := hcat(a)
ERROR: MethodError: no method matching guesstarget(::Nothing, ::Vector{Any}, ::Vector{Any})
Closest candidates are:
guesstarget(::Expr, ::Any, ::Any) at C:\Users\Shayan\.julia\packages\TensorCast\mQB8h\src\macro.jl:1330

最佳答案

只是做:

@cast b[j,i] := a[i][j]

例子:

julia> a = [rand(3) for _ in 1:2]
2-element Vector{Vector{Float64}}:
[0.20012490537057803, 0.0365551498875093, 0.02494737196890595]
[0.6563493855249903, 0.181706254856571, 0.29210798163726615]

julia> @cast b[j,i] := a[i][j]
3×2 lazystack(::Vector{Vector{Float64}}) with eltype Float64:
0.200125 0.656349
0.0365551 0.181706
0.0249474 0.292108

julia> (@cast b[j,i] := a[i][j]) == reduce(hcat, a)
true

解释

@cast 使用变量 ij 来定义矩阵布局 - 我们有一个 VectorVectors,因此在右侧您可以看到 a[i][j]:= 定义了一个新的 Matrix b[j,i] 表示相应的 ij 元素应该放在哪里。请注意,您没有声明 ij 变量 - 这是由宏处理的。

最后,请注意,如果您希望将结果具体化为实际矩阵(而不是惰性堆栈),您接下来可以执行 collect(b)

关于julia - 如何通过 TensorCast.jl 执行 reduce(hcat, <Vector{Vector}>)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74506869/

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