程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python中reshape_Numpy之reshape()

編輯:Python


用法:

Numpy中reshape的使用方法為:numpy.reshape(a, newshape, order='C')

參數詳解:

  • a: type:array_like(偽數組,可以看成是對數組的擴展,但是不影響原始數組。)(事實證明可以省略不寫,但此時reshape方法前是要處理的數組)
    需要reshape的array
  • newshape:新的格式——整數或整數數組,如(2,3)表示2行3列。新的形狀應該與原來的形狀兼容,即行數和列數相乘後等於a中元素的數量。如果是整數,則結果將是長度的一維數組,所以這個整數必須等於a中元素數量。若這裡是一個整數數組,那麼其中一個數據可以為-1,在這種情況下,這個值python會自動從根據第二個數值和剩余維度推斷出來。
  • order: 可選范圍為{‘C’, ‘F’, ‘A’}。使用索引順序讀取a的元素,並按照索引順序將元素放到變換後的的數組中。如果不進行order參數的設置,默認參數為C。

(1)“C” 指的是用類C寫的讀/索引順序的元素,最後一個維度變化最快,第一個維度變化最慢。以二維數組為例,簡單來講就是橫著讀,橫著寫,優先讀/寫一

(2)“F” 是指用FORTRAN類索引順序讀/寫元素,最後一個維度變化最慢,第一個維度變化最快。豎著讀,豎著寫,優先讀/寫一。注意,“C”和“F”選項不考慮底層數組的內存布局,只引用索引的順序。

(3)“A” 選項所生成的數組的效果與原數組a的數據存儲方式有關,如果數據是按照FORTRAN存儲的話,它的生成效果與”F“相同(列優先),否則與“C”相同(行優先)。這裡可能聽起來有點模糊,下面會給出示例。

注:FORTRANC是兩個語言,他們存儲數組的方式不同,FORTRSAN為列有限,而C為行優先。在python中默認數組生成的時候是按照C的方式進行存儲。但,很多時候我們需要調用Fortran的一些庫進行數學計算,所以需要讓numpy生成的數組變成按照FORTRAN的方式存儲,使用numpy.asfortranarray方法,本博客同時給出了它的官方鏈接。

  • returns: ndarray,即返回一或多維數組

舉例:

1.首先隨機生成一個4行3列的數組

2.使用reshape

這裡有兩種使用方法,可以使用np.reshape(r,(-1,1),order='F'),也可以使用r1=r.reshape((-1,1),order='F'),這裡選擇使用第二種方法。通過示例可以觀察不同的order參數效果。

通過例子可以看出來,F是優先對信息進行操作,而C是優先信息操作。如果未對r的格式進行設置,那麼我們rashape的時候以“A”的順序進行order的話,它的效果和“C”相同。

3.將r的存儲方式修改為類Fortan的方式進行存儲

做與第2步類似的操作


由下圖可知:np.asfortranarray(r),並不會對r的輸出結果產生影響,但是由於改變了r的存儲類型,會改變“A”格式的輸出結果,使其與“F”相同。

參考文獻:
numpy中reshape方法詳解
numpy.reshape官方文檔


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved