> The indices need to all be independent since otherwise you’d end up 
> producing an array with some rows/columns being of different length, which 
> isn’t supported by Julia’s Array{T, N}. That’s fine for a loop since for i 
> = 1:3, j = 1:i isn’t trying to fill up an array directly though.

That is a good point.  Maybe something to add to the documentation
though...

> — Mike
> ​
>
> On Monday, 21 September 2015 10:59:31 UTC+2, Alan Crawford wrote:
>>
>> Thanks Mike - precisely what i was after. 
>>
>> While this is a perfectly acceptable solution I wondered 
>> whether, following Mauro's suggestion, it was worth opening an issue in any 
>> case because it seems like it  be nice to be able to link indexes in array 
>> comprehensions in a similar way to for-loops. Views? 
>>
>>
>> On Monday, 21 September 2015 09:49:57 UTC+1, Michael Hatherly wrote:
>>>
>>> MyArray = [[zeros(Int, k) for n = 1:binomial(J, k)] for k = 1:K]
>>>
>>> seems to do what you want I think. Using 2 nested 1-d comprehensions 
>>> instead of a single 2-d comprehension.
>>>
>>> — Mike
>>> ​
>>> On Monday, 21 September 2015 10:37:06 UTC+2, Alan Crawford wrote:
>>>>
>>>>
>>>> Thanks Tomas. If I do:
>>>>
>>>> Y = [Array(Int64,n) for n in map(k -> binomial(J,k), 1:K)]
>>>>
>>>> Then Y[1] gives the desired result (i.e. Y[1][k] is a length 1 vector). 
>>>> However, the issue for Y[2] and above. For example, if I do Y[2][k] where 
>>>> k∈[1,binomial(J,2)]
>>>> then i get a length 1 vector, whereas I would like length 2 vector. 
>>>> Similarly for Y[3][k] I would like a length 3 vector.
>>>>
>>>>
>>>> On Monday, 21 September 2015 09:23:56 UTC+1, Tomas Lycken wrote:
>>>>>
>>>>> Ah.
>>>>>
>>>>> Maybe [Array(Int64,n) for n in map(k -> binomial(J,k), 1:K)] is what 
>>>>> you’re looking for?
>>>>>
>>>>> // T
>>>>>
>>>>> On Monday, September 21, 2015 at 10:18:31 AM UTC+2, Alan Crawford wrote:
>>>>>
>>>>> The lower case k is intentional. I didn't want such a 'large' array as 
>>>>>> the one created when I use K because large parts of that array would be 
>>>>>> redundant. Ideally, I want this array to be as small as possible, 
>>>>>> especially since J and K might be quite a bit larger than in the example.
>>>>>>
>>>>>> On Monday, 21 September 2015 09:13:53 UTC+1, Tomas Lycken wrote:
>>>>>>>
>>>>>>> Are you sure that’s not just a typo between k and K (note the case 
>>>>>>> difference)?
>>>>>>>
>>>>>>> This works for me:
>>>>>>>
>>>>>>> J=10
>>>>>>> K=3
>>>>>>> MyArray = [Array(Int64,k) for k in 1:K, n in 1:binomial(J,K)]
>>>>>>>
>>>>>>> // T
>>>>>>>
>>>>>>> On Monday, September 21, 2015 at 10:08:13 AM UTC+2, Alan Crawford 
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'd like to be able to define an array of vectors where the number 
>>>>>>>> of vectors in the array is linked to the length of the vector. For 
>>>>>>>> example, 
>>>>>>>> I want to be define an array with say 10 scalars, 45 length 2 vectors, 
>>>>>>>> 120 
>>>>>>>> length 3 vectors, .... and so on. Intuitively, I thought the following 
>>>>>>>> code 
>>>>>>>> might achieve this:
>>>>>>>>
>>>>>>>> J=10
>>>>>>>> K=3
>>>>>>>> MyArray = [Array(Int64,k) for k in 1:K, n in 1:binomial(J,k)]
>>>>>>>>
>>>>>>>>
>>>>>>>> However, it seems i cannot use k to define the number of element 
>>>>>>>> indexed by n.  
>>>>>>>>
>>>>>>>> I was wondering if anyone knew how to create the desired array?
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Alan
>>>>>>>>
>>>>>>> ​
>>>>>>>
>>>>>> ​
>>>>>
>>>>

Reply via email to