2016-04-10 17 views
4

私はArray{Float64,2}型の配列を持っていますが、それは1列の配列です。この配列を1列の配列Array{Float64,1}が必要な関数に渡すことはできません。私は実際に2が何を意味するのか、私の問題を解決する方法を理解していないし、ドキュメントを調べて調べることができなかった。Juliaの多次元配列型ですか?

答えて

6

Array{Float64,2}では、2は配列内の次元数です。あなたはそれが「それは1列の配列だ」だと言うので、あなたはおそらく、1行または1列のいずれかとの2次元で何か、1次元配列にこれをオンにする

julia> c = rand(1,3) 
1x3 Array{Float64,2}: 
0.190944 0.928697 0.251519 

julia> d = rand(3,1) 
3x1 Array{Float64,2}: 
0.0818493 
0.0342291 
0.58341 

のすなわち、1つを持っていますあなたが好むよう、あなたは、手動で配列をスライスまたはsqueezeを使用することができます。

julia> c[1,:] 
3-element Array{Float64,1}: 
0.190944 
0.928697 
0.251519 

julia> squeeze(d,2) 
3-element Array{Float64,1}: 
0.0818493 
0.0342291 
0.58341 

どちらの方法をあなたのタイプArray{Float64,1}の何かを与える必要があります。コメントに記載されているように、別のアプローチは、reshapeを使用することである。 (異なるランダムcを使用):

julia> reshape(c, length(c)) 
3-element Array{Float64,1}: 
0.680653 
0.0573147 
0.607054 

これは利点有する - と欠点 - シェイプ1xNまたはNx1の配列を持っているかどうか世話をしないのです。

+0

randnはまさに私が使っていたものです。私はそれがなぜ2D配列を返すのか分かりませんが? – cerremony

+1

'randn'が取る議論についてあなたは多分混乱していますか?引数は、あなたが何を*シェイプ*にするかを指示します。平均や標準偏差のようなものではありません。 – DSM

+0

だから 'd = rand(3)'は私に '3要素配列{Float64,1}'を与えてくれるでしょうか? '3x1'配列が' 3要素 '列ベクトルと異なるのはなぜですか? – cerremony