I am using for loop that divides a large array say arr
and assign the subsets into arrays arr1, arr2.
.
I am stuck at assigning subsets to arrays within a loop.
My whole datastet arr
contains 5 rows and 5 columns.
arr= [1 3 4 5 6;2 5 6 7 8;2 3 1 4 6 ;8 6 5 3 2;1 5 8 5 4]
I need to this split into arr1, arr2, arr3
as
arr1=[1 3 4 5 6;2 5 6 7 8]
arr2=[2 3 1 4 6 ;8 6 5 3 2]
arr3=[1 5 8 5 4] // remaining
I want to do this splitting inside loop so that the three lines get reduced to one line.
If you could provide a more concrete example it would be helpful.
As an example I will assume the array is a matrix.
srand(0)
using Distributions
arr = rand(100, 5)
index = Distributions.sample(1:5, 100)
output = map(group -> arr[group .== index,:], unique(index))
In this example index
is just a vector which indicates to which group the row (splitting by the first dimension) belongs to. You could use a for loop, but for most instances map
will be sufficiently efficient. I prefer map
to list comprehension since it will preserve the type (Matrix
). If you just need to perform a computation on each subset, you could calculate it on the fly or store the Vector
of Matrix
and perform the calculations afterwards.
1 Like