Having a matrix like
ma = [[0.343, 0.351, 0.306], [0.145, 0.368, 0.487]]
I want to get a vector like:
[0.343, 0.145, 0.351, 0.368, 0.306, 0.487]
To try to get it, I am using numpy
and reshape
but it is not working.
a = np.array(ma)
>>> print a.shape
(2, 3)
But I am getting:
c = a.reshape(3, 2, order='F')
>>> print c
array([[ 0.343, 0.368],
[ 0.145, 0.306],
[ 0.351, 0.487]])
What would be the best way to do it for any matrix size? I mean, for example, if matrix is not squared like:
[[0.404, 0.571, 0.025],
[0.076, 0.694, 0.230],
[0.606, 0.333, 0.061],
[0.595, 0.267, 0.138]]
I would like to get:
[0.404, 0.076, 0.606, 0.595, 0.571, 0.694, 0.333, 0.267, 0.025, 0.230, 0.061, 0.138]
You can use ravel()
to flatten the array.
>>> a.T.ravel()
array([ 0.343, 0.145, 0.351, 0.368, 0.306, 0.487])
# Or specify Fortran order.
>>> a.ravel('F')
array([ 0.343, 0.145, 0.351, 0.368, 0.306, 0.487])
a = np.random.rand(4,2)
>>> a
array([[ 0.59507926, 0.25011282],
[ 0.68171766, 0.41653172],
[ 0.83888691, 0.22479481],
[ 0.04540208, 0.23490886]])
>>> a.T.ravel() # or a.ravel('F')
array([ 0.59507926, 0.68171766, 0.83888691, 0.04540208, 0.25011282,
0.41653172, 0.22479481, 0.23490886])