Julia Reverse N维数组

时间:2014-12-10 21:44:23

标签: arrays julia

在Python中,可以使用标准[::-1]反转Numpy数组,即

A = np.diag(np.arange(1,3)) 
A[::, ::-1] 
A[::-1] 
A[::-1, ::-1]

Julia不支持[::-1]reverse方法仅适用于1D数组且仅适用于1D列(默认情况下行为2D)。

还有一种替代品我不知道吗?

5 个答案:

答案 0 :(得分:11)

尝试以下操作,这与numpy版本基本相同:

julia> X = rand(3,3)
3x3 Array{Float64,2}:
 0.782622  0.996359  0.335781
 0.719058  0.188848  0.985693
 0.455355  0.910717  0.870187

julia> X[end:-1:1,end:-1:1]
3x3 Array{Float64,2}:
 0.870187  0.910717  0.455355
 0.985693  0.188848  0.719058
 0.335781  0.996359  0.782622

答案 1 :(得分:3)

跟随@ IainDunning的回答,这里numpy和Julia之间的一个重要区别是Julia中的X[:,end:-1:1]返回一个副本,而numpy X[:,::-1]将返回相同数据的视图(没有复制)。

我自己只是在学习朱莉娅,但似乎你可以使用sub(X, :, size(X)[2]:-1:1)在Julia中完成类似的事情,这会返回Julia相当于一个视图(SubArray)。有趣的是,就我所见,你不能在这个结构中使用end关键字,而是必须传递维度中的实际结束索引。

答案 2 :(得分:2)

Julia 1.0中,获取列向量:

$ react-native-git-upgrade

对于行向量,只需声明要翻转第二维:

julia> reverse([1, 2, 3])
3-element Array{Int64,1}:
 3
 2
 1

答案 3 :(得分:0)

您可以使用flipdim(mat, d)功能。

参考:http://docs.julialang.org/en/release-0.4/stdlib/arrays/

答案 4 :(得分:0)

尝试以下功能:

function reverser(x::AbstractArray, dims::AbstractVector{<:Integer})
    y = copy(x)
    for d in dims
        y = reverse(y, dims=d)
    end
    return y
end

reverser(x::AbstractArray) = reverser(x, 1:ndims(x)) # all dimensions
reverser(x::AbstractArray, d::Integer) = reverser(x, [1])