Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化Julia中的数组_Julia - Fatal编程技术网

初始化Julia中的数组

初始化Julia中的数组,julia,Julia,我正在尝试创建一个包含两个数组的数组。然而,a=[[1,2],[3,4]]并不能做到这一点,它实际上包含了数组。朱莉娅也是如此:[[1,2],[3,4]==[1,2,3,4]。有什么想法吗 作为临时解决方法,我使用push!(按!(数组{Int,1}[],a),b)您可能需要一个矩阵: julia> a = [1 2; 3 4] 2x2 Int64 Array: 1 2 3 4 也许是一个元组: julia> a = ([1,2],[3,4,5]) ([1,2],[3,4,

我正在尝试创建一个包含两个数组的数组。然而,
a=[[1,2],[3,4]]
并不能做到这一点,它实际上包含了数组。朱莉娅也是如此:
[[1,2],[3,4]==[1,2,3,4]
。有什么想法吗


作为临时解决方法,我使用
push!(按!(数组{Int,1}[],a),b)

您可能需要一个矩阵:

julia> a = [1 2; 3 4]
2x2 Int64 Array:
 1  2
 3  4
也许是一个元组:

julia> a = ([1,2],[3,4,5])
([1,2],[3,4,5])

如果您想要数组而不是矩阵(即二维
数组
):


通过将类型放在
[]
前面,可以参数化
数组
文本(指定元素的类型)。因此,这里我们使用
数组
类型参数化
数组
文本。这改变了文字声明中括号的解释。

你也可以做
{[1,2],[3,4]}
,它创建一个
数组{Any,1}
,包含
[1,2]
[3,4]
而不是
数组{T,N},1}
数组{{T,N},1}(或
数组{Array{Int64,N},1}
,如果您将类型放在
[]
)前面。如果您想要更强类型的对象,例如Int向量向量(即
数组{Array{Int64,1},1}
),请使用以下命令:

a = Vector{Int}[ [1,2], [3,4] ]

有关构造
Array
类型的数组的一般回答:

a = Array[ [1,2], [3,4] ]

在朱丽亚中,可以有一个数组来保存其他数组类型对象。请考虑下面的初始化各种数组类型的例子:

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
我们指定元素必须是二维数组。因此,由于
rand(3)
不生成二维数组,我们无法使用它为
D

指定数组中数组的特定维度

虽然我们可以指定一个数组将包含Array类型的元素,并且我们可以指定,例如,这些元素应该是二维数组,但是我们不能直接指定这些元素的维数。例如,我们不能直接指定一个数组包含10个数组,每个数组都是5,5。我们可以从syn中看到这一点用于构造数组的
Array()
函数的税:

数组{T}(dims)

构造元素类型为T的未初始化密集数组。dims可以是元组或一系列整数参数。语法数组(T,dims)也可用,但不推荐使用

Julia中数组的类型包含维度的数量,但不包含维度的大小。因此,在该语法中没有位置指定精确的维度。不过,使用数组理解可以实现类似的效果:

E = [Array{Float64}(5,5) for idx in 1:10]

在Julia v0.5中,原始语法现在生成所需的结果:

julia> a = [[1, 2], [3, 4]]
2-element Array{Array{Int64,1},1}:
 [1,2]
 [3,4]

julia> VERSION
v"0.5.0"

对于那些想知道的人来说,在v0.7中,这是非常相似的:

Array{Array{Float64,1},2}(undef, 10,10)  #creates a two-dimensional array, ten rows and ten columns where each element is an array of type Float64

Array{Array{Float64, 2},1}(undef,10) #creates a one-dimensional array of length ten, where each element is a two-dimensional array of type Float64

我原以为
{}
是为地图设计的,但我试过了,发现它确实像你说的那样。这里发生的事情比我意识到的要多得多!
{…}
在Julia v0.4中被弃用。@DavidP.Sanders这句语法被什么替换了?在将来(希望是v0.5),它将是你想写的,[[1,2],[3,4]],即向量向量。(在Julia v0.3中,语法将两个数组连接成一个包含4个元素的数组。这在v0.4中也被弃用。连接现在使用“;”:[[1,2];[3,4]]给出[1,2,3,4]。)目前,最好的选择是
vector{Int}[[1,2],[3,4]
Julia C=array{array{Float64}}(10)错误:MethodError:没有方法匹配数组{Array{Float64,N}其中N,N}其中N(::Int64)最近的候选对象是:Array{Array{Float64,N}其中N,N}其中N(::UndeInitializer,::Int64)其中T在引导时。jl:408 Array{Array{Float64,N}其中N,N}其中N(::UndeInitializer,::Int64,::Int64)其中T在引导时。jl 409 Array{Float64,N}其中N,N}其中N(::未定义初始值设定项,::Int64,::Int64,::Int64)其中T在boot.jl:410。。。