的的a
爲了 'F'
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
是[0,4,8,12,1,5,9 ...](2元件
現在重新排列它們以,8)陣列。
我認爲reshape
文檔談論了散列元素,然後重塑它們。很明顯,這個ravel是先完成的。
用a.ravel(order='F').reshape(2,8)
進行實驗。
哎呀,我得到你所期望的:
In [208]: a = np.arange(16).reshape(4,4)
In [209]: a
Out[209]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
In [210]: a.ravel(order='F')
Out[210]: array([ 0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15])
In [211]: _.reshape(2,8)
Out[211]:
array([[ 0, 4, 8, 12, 1, 5, 9, 13],
[ 2, 6, 10, 14, 3, 7, 11, 15]])
OK,我有重塑
In [214]: a.ravel(order='F').reshape(2,8, order='F')
Out[214]:
array([[ 0, 8, 1, 9, 2, 10, 3, 11],
[ 4, 12, 5, 13, 6, 14, 7, 15]])
In [215]: a.ravel(order='F').reshape(2,8).flags
Out[215]:
C_CONTIGUOUS : True
F_CONTIGUOUS : False
...
In [216]: a.ravel(order='F').reshape(2,8, order='F').flags
Out[216]:
C_CONTIGUOUS : False
F_CONTIGUOUS : True
期間保持 'F' 爲了從np.reshape
文檔
你可以考慮將整形作爲第一次散列(使用給定的 索引順序),然後從使用與用於 騷亂相同種類的索引排序將陣列劃分爲 新陣列。
order
上的注意事項相當長,因此該主題令人困惑並不奇怪。
我的困惑是在fortran訂單部分。 Fortran命令不會遵循我所說的我期望的陣列格式(如上所示)嗎?我不明白爲什麼Fortran訂單正在返回它。 – metalheadzone