我正在尝试创建一个包含两个数组的数组。但是,a = [[1, 2], [3, 4]]
不会这样做,它实际上会对数组进行连接。朱莉娅也是如此:[[1, 2], [3, 4]] == [1, 2, 3, 4]
。有什么想法吗?
作为临时解决方法,我使用push!(push!(Array{Int, 1}[], a), b)
。
答案 0 :(得分:22)
如果你想要一个数组而不是一个矩阵(即2维Array
):
a = Array[ [1,2], [3,4] ]
您可以通过将类型放在Array
前面来参数化(指定元素的类型)[]
文字。所以我们在这里使用Array
类型参数化Array
文字。这改变了文字声明中括号的解释。
答案 1 :(得分:15)
Sean Mackesey的回答会给你一些类型Array{Array{T,N},1}
(或Array{Array{Int64,N},1}
,如果你把类型放在[]
前面)。如果您想要更强类型的内容,例如Int的向量向量(即Array{Array{Int64,1},1}
),请使用以下内容:
a = Vector{Int}[ [1,2], [3,4] ]
答案 2 :(得分:13)
在Julia v0.5中,原始语法现在产生了所需的结果:
<!DOCTYPE html>
<html>
<head lang=en>
<base href=.>
<meta charset=UTF-8>
<meta name=viewport content="width=device-width,initial-scale=1">
<title>Bingo Transaction Processor Management</title>
<meta http-equiv=content-type content="text/html; charset=utf-8"/>
<meta name=viewport content="width=device-width,initial-scale=1"/>
</head>
<body>
<pm-app>Loading App...</pm-app>
<script src=/dist/polyfills.bundle.js>
</script> <script src=/dist/vendor.bundle.js>
</script> <script src=/dist/app.bundle.js></script>
</body>
</html>
答案 3 :(得分:8)
关于构造Array
类型的数组的一般答案:
在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}(变暗)
使用元素类型T构造未初始化的密集数组.dims可以是元组或一系列整数参数。语法Array(T,dims)也可用,但已弃用。
Julia中的数组类型包含维度的数量,但不包括这些维度的大小。因此,此语法中没有指定精确尺寸的位置。然而,使用数组理解可以实现类似的效果:
E = [Array{Float64}(5,5) for idx in 1:10]
答案 4 :(得分:2)
你可能想要一个矩阵:
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])
答案 5 :(得分:2)
您还可以{[1,2], [3,4]}
创建Array{Any,1}
,其中包含[1,2]
和[3,4]
而不是Array{Array{T,N},1}
。
答案 6 :(得分:1)
对于那些想知道的人,在v0.7中,它非常相似:
Array{Array{Float64,1},2}(undef, 10,10) #creates a two-dimensional array, ten rows and ten coloums 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