朱莉娅多维数组类型?

cer*_*ony 4 multidimensional-array julia

我有一个类型的数组,Array{Float64,2}但它是一个1列的数组,我无法将其传递给期望单列数组类型的函数Array{Float64,1}.我真的不明白是什么2意思或如何解决我的问题,我无法通过搜索任何文档来弄明白.

DSM*_*DSM 5

Array{Float64,2},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  
Run Code Online (Sandbox Code Playgroud)

要将其转换为一维数组,您可以手动切片或使用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  
Run Code Online (Sandbox Code Playgroud)

任何一种方法都应该给你一些类型Array{Float64,1}.


如评论中所述,另一种方法是使用reshape,例如(使用不同的随机c):

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

这样做的优点和缺点是不关心你是否有一个1xN或Nx1的阵列.

  • 不,它会给你一个3元素的数组{Float64,1}.1表示您有一维对象,因此您不能拥有3x1.这就像3英寸长的线和3英寸×1英寸的矩形之间的区别.那有意义吗? (2认同)
  • `vec(c)`,其中`c`是任何数组也返回一个向量.它非常**,在这种情况下是正确的.但是具有多个维度和多个元素的高维矩阵的结果取决于实现 - 使用理解. (2认同)