If you don't want duplicates, randperm is an easy solution. --Tim
On Thursday, March 26, 2015 01:09:02 AM Gunnar Farnebäck wrote: > It doesn't behave the same with respect to duplicates in A but I would do > > N = 100 > A = rand(N) > n = iceil(0.7 * N) > testindex = sample(1:size(A,1), replace=false, n) > testA = A[testindex] > trainindex = setdiff(1:N, testindex) > trainA = A[trainindex] > > Den torsdag 26 mars 2015 kl. 06:21:42 UTC+1 skrev [email protected]: > > Hi, > > I have an array of 100 elements. I want to split the array to 70 (test > > set) and 30 (train set) randomly. > > > > N=100 > > A = rand(N); > > n = convert(Int, ceil(N*0.7)) > > testindex = sample(1:size(A,1), replace=false,n) > > testA = A[testindex]; > > > > How can I get the train set? > > > > I could loop through testA and A to get trainA as below > > > > trainA = Array(eltype(testA), N-n); > > k=1 > > for elem in A > > > > if !(elem in testA) > > > > trainA[k] = elem > > k=k+1 > > > > end > > > > end > > > > Is there a more efficient or elegant way to do this? > > > > Thanks!
