Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays Julia语言:子函数与切片函数_Arrays_Function_Julia - Fatal编程技术网

Arrays Julia语言:子函数与切片函数

Arrays Julia语言:子函数与切片函数,arrays,function,julia,Arrays,Function,Julia,有人能简单地解释一下julia的v0.4函数之间的区别吗 和(也许) 一些简单的例子会非常有用。 非常感谢不同之处在于slice会删除所有带有标量(非向量)的维度,而sub通常会保留它们。例如: julia> A = rand(3,3) 3x3 Array{Float64,2}: 0.403464 0.229403 0.924686 0.953741 0.175086 0.49139 0.0290678 0.705564 0.567355 julia> a

有人能简单地解释一下julia的v0.4函数之间的区别吗

和(也许)

一些简单的例子会非常有用。
非常感谢

不同之处在于
slice
会删除所有带有标量(非向量)的维度,而
sub
通常会保留它们。例如:

julia> A = rand(3,3)
3x3 Array{Float64,2}:
 0.403464   0.229403  0.924686
 0.953741   0.175086  0.49139 
 0.0290678  0.705564  0.567355

julia> a = slice(A, 2, :)   # this will be 1-dimensional
3-element SubArray{Float64,1,Array{Float64,2},(Int64,Colon),2}:
 0.953741
 0.175086
 0.49139 

julia> b = sub(A, 2, :)     # this will be 2-dimensional
1x3 SubArray{Float64,2,Array{Float64,2},(UnitRange{Int64},Colon),2}:
 0.953741  0.175086  0.49139

julia> size(a)
(3,)

julia> size(b)
(1,3)
有一个例外:
sub
删除用标量索引的维度(如果它们是“尾随”维度),这意味着以后没有用向量索引的维度:

julia> a = slice(A, :, 2)
3-element SubArray{Float64,1,Array{Float64,2},(Colon,Int64),2}:
 0.229403
 0.175086
 0.705564

julia> b = sub(A, :, 2)
3-element SubArray{Float64,1,Array{Float64,2},(Colon,Int64),2}:
 0.229403
 0.175086
 0.705564

julia> size(a)
(3,)

julia> size(b)
(3,)
如果使用范围
切片
,则会得到类似
sub
的行为:

julia> a = slice(A, 2:2, :)
1x3 SubArray{Float64,2,Array{Float64,2},(UnitRange{Int64},Colon),1}:
 0.953741  0.175086  0.49139

julia> size(a)
(1,3)
重要的不是索引的长度,而是类型:使用非标量索引的任何维度都将被保留。

如果使用范围切片,则会得到类似sub的行为。
sub
是否有其他功能无法使用
slice
完成。或者在任何情况下都可以
slice
替换
sub