日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 多维数组轴_python – numpy通过任意轴重塑多维数组

發布時間:2024/4/17 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 多维数组轴_python – numpy通过任意轴重塑多维数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每個數組都有一個自然(1D扁平)的元素.重塑數組時,就好像它首先被展平(從而獲得自然順序),然??后重新整形:

In [54]: z.ravel()

Out[54]:

array([ 0, 3, 6, 1, 4, 7, 2, 5, 8, 9, 12, 15, 10, 13, 16, 11, 14,

17])

In [55]: z.ravel().reshape(2*3, 3)

Out[55]:

array([[ 0, 3, 6],

[ 1, 4, 7],

[ 2, 5, 8],

[ 9, 12, 15],

[10, 13, 16],

[11, 14, 17]])

請注意,在“自然順序”中,0和1相距很遠.無論你重塑它,0和1都不會沿著最后一個軸彼此相鄰,這就是你想要的所需數組:

desired = np.array([[ 0, 1, 2],

[ 3, 4, 5],

[ 6, 7, 8],

[ 9, 10, 11],

[12, 13, 14],

[15, 16, 17]])

這需要一些重新排序,在這種情況下可以通過交換:

In [53]: z.swapaxes(1,2).reshape(2*3, 3)

Out[53]:

array([[ 0, 1, 2],

[ 3, 4, 5],

[ 6, 7, 8],

[ 9, 10, 11],

[12, 13, 14],

[15, 16, 17]])

因為swapaxes(1,2)將值放在所需的順序中

In [56]: z.swapaxes(1,2).ravel()

Out[56]:

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

17])

In [57]: desired.ravel()

Out[57]:

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

17])

請注意,重塑方法還有一個順序參數,可用于控制(C-或F-)順序,從數組中讀取元素并將其放置在重新形成的數組中.但是,我不認為這對你的情況有幫助.

考慮重塑極限的另一種方法是說所有重塑后跟ravel是相同的:

In [71]: z.reshape(3,3,2).ravel()

Out[71]:

array([ 0, 3, 6, 1, 4, 7, 2, 5, 8, 9, 12, 15, 10, 13, 16, 11, 14,

17])

In [72]: z.reshape(3,2,3).ravel()

Out[72]:

array([ 0, 3, 6, 1, 4, 7, 2, 5, 8, 9, 12, 15, 10, 13, 16, 11, 14,

17])

In [73]: z.reshape(3*2,3).ravel()

Out[73]:

array([ 0, 3, 6, 1, 4, 7, 2, 5, 8, 9, 12, 15, 10, 13, 16, 11, 14,

17])

In [74]: z.reshape(3*3,2).ravel()

Out[74]:

array([ 0, 3, 6, 1, 4, 7, 2, 5, 8, 9, 12, 15, 10, 13, 16, 11, 14,

17])

因此,如果所需數組的ravel不同,則無法獲得它只是重新整形.

對于order =’F’進行重新整形也是如此,前提是你還要使用order =’F’進行調整:

In [109]: z.reshape(2,3,3, order='F').ravel(order='F')

Out[109]:

array([ 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8,

17])

In [110]: z.reshape(2*3*3, order='F').ravel(order='F')

Out[110]:

array([ 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8,

17])

In [111]: z.reshape(2*3,3, order='F').ravel(order='F')

Out[111]:

array([ 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8,

17])

可以使用兩個重塑獲得所需的數組:

In [83]: z.reshape(2, 3*3, order='F').reshape(2*3, 3)

Out[83]:

array([[ 0, 1, 2],

[ 3, 4, 5],

[ 6, 7, 8],

[ 9, 10, 11],

[12, 13, 14],

[15, 16, 17]])

但是我偶然發現了這件事.

如果我完全誤解了你的問題并且x和y是給號(而不是z)那么你可以使用row_stack而不是dstack獲得所需的數組:

In [88]: z = np.row_stack([x, y])

In [89]: z

Out[89]:

array([[ 0, 1, 2],

[ 3, 4, 5],

[ 6, 7, 8],

[ 9, 10, 11],

[12, 13, 14],

[15, 16, 17]])

總結

以上是生活随笔為你收集整理的python 多维数组轴_python – numpy通过任意轴重塑多维数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。