Transposed matrix

Hi,

I’m new to Julia and I apologize in advance if there’s a simple answer to my question somewhere but I’ve spent lots of time without any success.

I’m trying to re-write the following Python code in Julia

import scipy as sp
psi = sp.ones((1000, 1))
idx_blk = range(15)
x = sp.diag(1.0/psi[idx_blk].T[0])

My problem is I don’t know exactly what the [0] in the code above is doing (more of a Python issue but was hoping someone here might have a solution).

Julia

using LinearAlgebra
psi = ones(1000, 1)
idx_blk = 1:15
x = Diagonal(1.0 ./ transpose(psi[idx_blk]))

Thanks!

1 Like
>>> psi[idx_blk].T
array([[1., 1., 1., 1., 1.]])

Notice the double brackets [[, compared to

>>> psi[idx_blk].T[0]
array([1., 1., 1., 1., 1.])

so the [0] is pulling out the first array from an “array-of-arrays” (a type of matrix?).

To get the same result in Julia you can do this:

using LinearAlgebra
psi = ones(10, 1)
idx_blk = 1:5
x = diagm(1.0./psi[idx_blk])

Note I’ve reduced the numbers. You don’t need to use transpose either.

2 Likes