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]
>> >>
>>
>

Reply via email to