在Python中,可以使用标准[::-1]
反转Numpy数组,即
A = np.diag(np.arange(1,3))
A[::, ::-1]
A[::-1]
A[::-1, ::-1]
Julia不支持[::-1]
,reverse
方法仅适用于1D数组且仅适用于1D列(默认情况下行为2D)。
还有一种替代品我不知道吗?
答案 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)
功能。
答案 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])