Для общего ответа на построения Массивы типа Array
:
В Julia вы можете иметь массив, содержащий другие объекты типа 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
Рассмотрим, например, различия между С и 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
мы указали, что элементы должны быть двухмерными массивами. Таким образом, поскольку rand(3)
не производит 2 одномерный массив, мы не можем использовать его, чтобы присвоить значение определенного элемента D
Указать конкретные размеры массивов в пределах массива
Хотя мы можем указать, что Массив будет содержать элементы, которые имеют тип Array, и мы можем указать, например, эти элементы должны быть двумерными массивами, мы не можем напрямую определять размеры этих элементов. Например. мы не можем напрямую указать, что мы хотим, чтобы Array держал 10 массивов, каждый из которых составлял 5,5.Мы можем увидеть это из синтаксиса для функции Array()
используется для построения массива:
массива {T} (тускнеет)
конструирует неинициализированный плотный массив с типом элемента Т. тускнеет может быть кортеж или ряд целых аргументов. Синтаксис Array (T, dims) также доступен, но устарел.
Тип массива в Юлии включает в себя количество измерений, но не размер этих размеров. Таким образом, в этом синтаксисе нет места для указания точных измерений. Тем не менее, подобный эффект может быть достигнут с использованием массива понимания:
E = [Array{Float64}(5,5) for idx in 1:10]
Я думал, что '' {} была для карт - но я пробовал это и вижу, что это действительно так, как вы говорите. Здесь гораздо больше, чем я понимаю! – Benjohn
'{...}' устарел в Julia v0.4. –
@ DavidP.Sanders, что было заменено этим синтаксисом? – PythonNut