[SciPy-user] Slicing arrays

Karl Young Karl.Young at ucsf.edu
Mon Dec 10 14:59:22 EST 2007


If you don't care about elegance or efficiency how about:

--------------------------------------------------------------------------------------------------
import scipy

a = scipy.array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65])

runs = 8
space = 4

b = scipy.array(a[1:runs+1])
for i in range(1,(len(a)/runs)-1):
    b = scipy.concatenate((b,a[b[-1]+space:b[-1]+runs+space+1]),axis=1)
-------------------------------------------------------------------------------------------------

PS If you really meant to cut off the last three elements of a, i'll 
leave that step to you...

>Hi all,
>
>I have an array
>
>  
>
>>>>a
>>>>        
>>>>
>array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 
>13, 14, 15, 16,
>        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
>29, 30, 31, 32, 33,
>        34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
>46, 47, 48, 49, 50,
>        51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 
>63, 64, 65])
>
>How can I extract an array b from a such that
>
>  
>
>>>>b
>>>>        
>>>>
>array([ 0,  1,  2,  6,  7,  8, 12, 13, 14, 18, 19, 20, 24, 
>25, 26, 30, 31,
>        32, 36, 37, 38, 42, 43, 44, 48, 49, 50, 54, 55, 
>56, 60, 61, 62])
>
>Nils
>_______________________________________________
>SciPy-user mailing list
>SciPy-user at scipy.org
>http://projects.scipy.org/mailman/listinfo/scipy-user
>
>  
>


-- 

Karl Young
Center for Imaging of Neurodegenerative Diseases, UCSF          
VA Medical Center (114M)              Phone:  (415) 221-4810 x3114  lab        
4150 Clement Street                   FAX:    (415) 668-2864
San Francisco, CA 94121               Email:  karl young at ucsf edu



More information about the SciPy-User mailing list