np.array([a[i] for i in [1,2,4] + list(range(7,17,2))]) This works, albeit awkward. Python was not originally designed for mathematics.
On Tue, Apr 5, 2016 at 10:40 AM, DNFwrote: > Thanks for the suggestion, but that returns a list, not an array. Also I > wanted a mix of arbitrary indices and a range (which could be arbitrarily > long). Using your idea, I then tried: > > np.array([a[i] for i in [1,2,4, range(7,17,2)]]) > > but that didn't work. Also it's a bit awkward compared to the elegance of > Julia. > > > On Tuesday, April 5, 2016 at 10:32:40 AM UTC+2, Sisyphuss wrote: >> >> You can use list compression in python >> >> [a[i] for i in [1,2,4,7,9] ] >> >> On Apr 5, 2016 8:55 AM, "DNF" <> wrote: >> > >> > Typo, I meant to type: >> > >> > Python 3.5 >> > a[i*len(a)//n:(i+1)*len(a)//n] >> > >> > Julia: >> > a[1+i*end÷n:(i+1)end÷n] >> > >> > I'm just learning Python, and must say I find indexing in Python to be >> very awkward compared to Julia or Matlab. Do you have any suggestion for >> how I should do this in Python? >> > a[[1; 4; 7:2:15]] >> > So far I've got: >> > a[np.concatenate(([1,4], np.arange(7,17,2)))] >> > >> > >> > >> > >> > On Tuesday, April 5, 2016 at 8:46:57 AM UTC+2, DNF wrote: >> >> >> >> >> >> On Saturday, April 2, 2016 at 1:55:55 PM UTC+2, Spiritus Pap wrote: >> >>> >> >>> A simple example why it makes my life hard: Assume there is an array >> of size 100, and i want to take the i_th portion of it out of n. This is a >> common scenario for research-code, at least for me and my friends. >> >>> In python: >> >>> a[i*100/n:(i+1)*100/n] >> >>> In julia: >> >>> a[1+div(i*100,n):div((i+1)*100,n)] >> >>> >> >>> A lot more cumbersome in julia, and it is annoying and unattractive. >> This is just a simple example. >> >> >> >> >> >> Python 3.5 >> >> a[i*len(a)//n:(i+1)*len(a)//n] >> >> >> >> Julia: >> >> a[1+i*end÷5:(i+1)end÷5] >> >> >> >