Python row major to column major order vector

本小妞迷上赌 提交于 2019-11-28 12:38:27

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

You can get want you want by transposing the matrix and then using numpy's ravel function:

mat = np.random.rand(3,2)
print np.ravel(mat.T)

Flatten the array in Fortran order:

c = a.flatten(order='F')

You could also get the results you wanted with reshape, but it's wordier:

c = a.reshape(a.size, order='F')
>>> A = ([[0, 1, 2],
...        [3, 4, 5],
...        [6, 7, 8]])
>>> 
>>> print(A)
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
>>> 
>>> [y  for x in [[row[i] for row in A] for i in range(len(A[0]))] for y in x]
[0, 3, 6, 1, 4, 7, 2, 5, 8]
>>> 
>>> 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!