[ncl-talk] generate_sample_indices without replacement

Rashed Mahmood rashidcomsis at gmail.com
Fri Feb 18 09:03:05 MST 2022


Assuming that you need ensemble means of the 40 randomly selected members
for 1000 times, then something as following should work:

   nper   = 1000  ; number of times that you want to select 40 random
members
        new_arr   = new((/nper,dimx(0),dimx(2),dimx(3)/),typeof(T2m),T2m@
_FillValue)
        new_arr!0 = "randomEM"
        new_arr!1 = T2m!0
        new_arr!2 = T2m!2
        new_arr!3 = T2m!3
        new_arr&$new_arr!0$ = ispan(0,nper-1,1)
        new_arr&$new_arr!1$ = T2m&$T2m!0$
        new_arr&$new_arr!2$ = T2m&$T2m!2$
        new_arr&$new_arr!3$ = T2m&$T2m!3$
        new_arr&$new_arr!2$@units = T2m&$T2m!2$@units
        new_arr&$new_arr!3$@units = T2m&$T2m!3$@units
        new_arr at units = T2m at units


  do j= 0,nper-1
       iwo = generate_sample_indices( nens, 0 ) ; generate sample ids of
size "nens"
       new_arr(j,:,:,:) = dim_avg_n_Wrap(T2m(:,iwo(0:n-1),:,:),1)
                     ; get average of the n=40 members
  end do


hope that help!...
Rashed















On Fri, Feb 18, 2022 at 2:21 AM Sri nandini via ncl-talk <
ncl-talk at mailman.ucar.edu> wrote:

> Thank you!
>
> Would some one help me understand how to modify this if i need to
> subsample multiple times?
>
> Sri
> On 17.02.22 19:10, Rashed Mahmood wrote:
>
> Hi Sri,
> I am not fully sure what your end goal is here. However, if you need to
> randomly select 40 members only once then you do not need a loop for it.
> Also, if you want to select from 100 members then the function
> "generate_sample_indices" should have n=100 instead of 40 that you used.
>
> So if you are interested in randomly selecting *40 members ONLY ONCE *then
> your code would be:
> Note that I turned OFF the loop because it is not needed for this example.
> You can use a loop if you need to randomly select 40 members many times.
>
> ;   do j= 0,n-1
>      iwo = generate_sample_indices( nens, 0 )
>      rcp_40= T2m(:,iwo(0:n-1),:,:)
>
> ;   end do
>
>
> On Thu, Feb 17, 2022 at 8:28 AM Sri nandini via ncl-talk <
> ncl-talk at mailman.ucar.edu> wrote:
>
>> Hello dear ncl-users,
>>
>> I would like to know how to properly code for selecting 40 random
>> ensemble from a 100 ensembles of my data.
>>
>> I wonder if someone could help me with this code? My original data is
>> [time | 240] x [ens | 100] x [lat | 180] x [lon | 360]
>>
>>    f     = addfile ("temperature_data.nc", "r")
>>    T2m    = f->temp
>>
>>    printVarSummary(T2m)
>>    dimx = dimsizes(T2m)
>>    ntim = dimx(0)          ; 240- time dimension
>>    nens = dimx(1)          ; 100- ensemble dimension
>>    nlat = dimx(2)            ; 180- lat
>>    mlon = dimx(3)          ; 360- lon
>>
>>    T2m at _FillValue = -9.96921e+36
>>
>>    ; randomly select 40 members from 100 members without replacement
>>    ; define a new variable dimensions
>>
>>    n=40
>>    rcp_40=new((/ntim,n,nlat,mlon/),typeof(rcp45_anom))
>>    copy_VarCoords(rcp45_anom(:,0,:,:),rcp_40(:,0,:,:))    ; Copy metadata
>>    printVarSummary(rcp_40) ==>Dimensions and sizes:    [time | 240] x
>> [40] x [lat | 180] x [lon | 360]
>>
>>    Coordinates:
>>              time: [1192152..1366728]
>>              lat: [-89.5..89.5]
>>              lon: [   0.. 359]
>>
>>    do j= 0,n-1
>>    iwo = generate_sample_indices( n, 0 )
>>    rcp_40(:,j,:,:) = T2m(:,iwo,:,:)  ====>error here fatal:VarVarWrite:
>> Number of dimensions on left hand side does not match right hand side
>>
>>    end do
>>    printVarSummary(rcp_40)
>>
>> Could someone help me in this code?
>>
>> Best
>>
>> Sri
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at mailman.ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
> --
> Dr. Sri Nandini-Weiss
>
> Center for Earth System Research and Sustainability (CEN)
> Cluster of Excellence 'Climate, Climatic Change, and Society' (CLICCS)
>
> Universität Hamburg
> Institute of Oceanography
> Bundesstraße 53
> 20146 Hamburg
> Germany
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at mailman.ucar.edu
> List instructions, subscriber options, unsubscribe:
> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20220218/be9204ac/attachment.html>


More information about the ncl-talk mailing list