【问题标题】:Julia Array Concatenation dimension mismatchJulia Array Concatenation 维度不匹配
【发布时间】:2014-11-05 23:38:55
【问题描述】:

使用y =[x,a] 连接我的两个数组时出现尺寸不匹配问题:

x = reshape(1:16, 4, 4)
x = mean((x ./ mean(x,1)),2)'

a = zeros(3)

println(x)

y =[x,a]

print (y)

如果我尝试将它们结合起来,我会得到这个错误:

mismatch in dimension 2

变量 x 和 a 在控制台中的维度似乎相同:

println(x)

[0.7307313376278893 0.9102437792092966 1.0897562207907034 1.2692686623721108]

println(a)

[0.0,0.0,0.0]

但是x 在第二维。有没有办法组合数组以便我可以进入维度 1?

y = [0.7307313376278893 0.9102437792092966 1.0897562207907034 1.2692686623721108, 0.0,0.0,0.0]

【问题讨论】:

    标签: arrays multidimensional-array julia


    【解决方案1】:

    问题在于,通过转置 x(在行尾放置 '),您最终会得到以下结果:

    julia> size(x)
    (1,4)
    
    julia> size(a)
    (3,)
    

    因此,当您尝试 y=[x,a] 时,Julia 正确地抱怨它无法连接它们。

    有(至少)两种解决方案:

    1) 不要转置 x:

    x = reshape(1:16, 4, 4)
    x = mean((x ./ mean(x,1)),2)
    
    a = zeros(3)
    
    println(x)
    
    y =[x,a]
    
    print (y)
    

    2) 也可以转置a 并在没有逗号的情况下连接:

    x = reshape(1:16, 4, 4)
    x = mean((x ./ mean(x,1)),2)'
    
    a = zeros(3)'
    
    println(x)
    
    y =[x a]
    
    print (y)
    

    在第一种情况下,您将拥有size(y) = (7, 1),在第二种情况下,您将拥有size(y) = (1,7),因此您选择哪个选项将取决于您想要y 的大小。

    【讨论】:

    • 我猜显示器有问题,因为它要么是没有逗号的直线交叉,要么是中间没有逗号的直线向下。有没有办法像方法 2 一样将其更改为 1xn 数组,但使用逗号还是逗号只是一个装饰问题?
    • 与逗号交叉 = 一个向量,一个固有的一维对象。没有逗号的对面 = 一个矩阵,有 1 行。逗号仅用于向量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多