陣列陣列 - 屬性和構造
在 Julia 中,你可以擁有一個包含其他 Array 型別物件的 Array。考慮以下初始化各種型別的陣列的示例:
A = Array{Float64}(10,10) # A single Array, dimensions 10 by 10, of Float64 type objects
B = Array{Array}(10,10,10) # A 10 by 10 by 10 Array. Each element is an Array of unspecified type and dimension.
C = Array{Array{Float64}}(10) ## A length 10, one-dimensional Array. Each element is an Array of Float64 type objects but unspecified dimensions
D = Array{Array{Float64, 2}}(10) ## A length 10, one-dimensional Array. Each element of is an 2 dimensional array of Float 64 objects
例如,考慮 C 和 D 之間的差異:
julia> C[1] = rand(3)
3-element Array{Float64,1}:
0.604771
0.985604
0.166444
julia> D[1] = rand(3)
ERROR: MethodError:
rand(3)
生成 Array{Float64,1}
型別的物件。由於 C
元素的唯一規範是它們是具有 Float64 型別元素的陣列,因此這符合 C
的定義。但是,對於 D
,我們指定元素必須是 2 維陣列。因此,由於 rand(3)
不產生二維陣列,我們不能用它來為 D
的特定元素賦值。
指定陣列中陣列的特定維度
雖然我們可以指定一個 Array 將包含 Array 型別的元素,並且我們可以指定,例如那些元素應該是二維陣列,但我們不能直接指定這些元素的尺寸。例如,我們不能直接指定我們想要一個包含 10 個陣列的陣列,每個陣列為 5,5。我們可以從用於構造陣列的 Array()
函式的語法中看到這一點:
陣列橫置(變暗)
構造一個元素型別為 T 的未初始化的密集陣列 .dims 可以是元組或一系列整數引數。語法 Array(T, dims)也可用,但已棄用。
Julia 中的陣列型別包含維度的數量,但不包括這些維度的大小。因此,此語法中沒有指定精確尺寸的位置。然而,使用陣列理解可以實現類似的效果:
E = [Array{Float64}(5,5) for idx in 1:10]
注意:此文件反映了以下 SO 答案