给定一个二维矩阵:
arr = rand(10,10)
我想按离散范围对其进行切片,例如第 2 至 4 行,然后是第 6 至 8 行,形成一个 6x10 矩阵。 由于我没有找到类似的现有问题和解决方案,我尝试了
arr[[2:4,6:8],:]
arr[[[2:4],[6:8]],:]
和类似的东西,但这些不起作用。
我可以用
vcat(arr[2:4,:],arr[6:8,:])
然而,这似乎很尴尬,有没有更好的方法在 julia 中按离散范围进行切片? 谢谢。
最佳答案
你几乎是正确的。这是这样做的方法:
julia> arr = [(i,j) for i in 1:10, j in 1:10]
10×10 Array{Tuple{Int64,Int64},2}:
(1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (1, 6) (1, 7) (1, 8) (1, 9) (1, 10)
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (2, 7) (2, 8) (2, 9) (2, 10)
(3, 1) (3, 2) (3, 3) (3, 4) (3, 5) (3, 6) (3, 7) (3, 8) (3, 9) (3, 10)
(4, 1) (4, 2) (4, 3) (4, 4) (4, 5) (4, 6) (4, 7) (4, 8) (4, 9) (4, 10)
(5, 1) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (5, 8) (5, 9) (5, 10)
(6, 1) (6, 2) (6, 3) (6, 4) (6, 5) (6, 6) (6, 7) (6, 8) (6, 9) (6, 10)
(7, 1) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7) (7, 8) (7, 9) (7, 10)
(8, 1) (8, 2) (8, 3) (8, 4) (8, 5) (8, 6) (8, 7) (8, 8) (8, 9) (8, 10)
(9, 1) (9, 2) (9, 3) (9, 4) (9, 5) (9, 6) (9, 7) (9, 8) (9, 9) (9, 10)
(10, 1) (10, 2) (10, 3) (10, 4) (10, 5) (10, 6) (10, 7) (10, 8) (10, 9) (10, 10)
julia> arr[[2:4; 6:8], :]
6×10 Array{Tuple{Int64,Int64},2}:
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (2, 7) (2, 8) (2, 9) (2, 10)
(3, 1) (3, 2) (3, 3) (3, 4) (3, 5) (3, 6) (3, 7) (3, 8) (3, 9) (3, 10)
(4, 1) (4, 2) (4, 3) (4, 4) (4, 5) (4, 6) (4, 7) (4, 8) (4, 9) (4, 10)
(6, 1) (6, 2) (6, 3) (6, 4) (6, 5) (6, 6) (6, 7) (6, 8) (6, 9) (6, 10)
(7, 1) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7) (7, 8) (7, 9) (7, 10)
(8, 1) (8, 2) (8, 3) (8, 4) (8, 5) (8, 6) (8, 7) (8, 8) (8, 9) (8, 10)
注意 ;
不是 ,
在 [2:4; 6:8]
。 Here您可以在 Julia 中找到有关串联功能的更多信息。
关于arrays - Julia 中离散范围的切片矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65541891/