Greg got it right, I am looking to use y to specify the columns to select
in the matrix a.
On Saturday, December 19, 2015 at 10:17:21 PM UTC-8, Stefan Karpinski wrote:
>
> In your example y is a row matrix, rather than a vector. If you make it a
> vector it works:
>
> julia> a = [-1 2
> 3 -4]
> 2x2 Array{Int64,2}:
> -1 2
> 3 -4
>
> julia> y = [1, 2]
> 2-element Array{Int64,1}:
> 1
> 2
>
> julia> a[:,y]
> 2x2 Array{Int64,2}:
> -1 2
> 3 -4
>
>
> This seems like it may not be what you want though. Can you explain what
> you'd like it to do?
>
> On Sat, Dec 19, 2015 at 7:44 PM, Lex <[email protected] <javascript:>>
> wrote:
>
>> I am expecting [-1 -4] in the Julia example.
>>
>>
>> On Saturday, December 19, 2015 at 4:42:07 PM UTC-8, Lex wrote:
>>>
>>> Hi
>>>
>>> In Python, I am able to select values like this:
>>>
>>> >>> a = np.matrix([[-1,2],[3,-4]])
>>> >>> y = np.matrix([1,0])
>>> >>> a[range(2),y]
>>> matrix([[2, 3]])
>>> >>>
>>>
>>> Is there any equivalent in Julia or using a loop is the only way?
>>>
>>> julia> a
>>> 2x2 Array{Int64,2}:
>>> -1 2
>>> 3 -4
>>>
>>> julia> y
>>> 1x2 Array{Int64,2}:
>>> 1 2
>>>
>>> julia> a[:, y]
>>> ERROR: MethodError: `index_shape_dim` has no method matching
>>> index_shape_dim(::Array{Int64,2}, ::Int64, ::Array{Int64,2})
>>>
>>> You might have used a 2d row vector where a 1d column vector was
>>> required.
>>> Note the difference between 1d column vector [1,2,3] and 2d row vector
>>> [1 2 3].
>>> You can convert to a column vector with the vec() function.
>>> Closest candidates are:
>>> index_shape_dim(::Any, ::Any, ::Real...)
>>> index_shape_dim(::Any, ::Any, ::Colon)
>>> index_shape_dim(::Any, ::Any, ::Colon, ::Any, ::Any...)
>>> ...
>>> in getindex at abstractarray.jl:488
>>>
>>> julia> a[:, y[]]
>>> 2-element Array{Int64,1}:
>>> -1
>>> 3
>>>
>>> julia> a[:, y[:]]
>>> 2x2 Array{Int64,2}:
>>> -1 2
>>> 3 -4
>>>
>>> julia>
>>>
>>>
>>>
>