numpy簡明教程 2

2021-06-23 05:27:19 字數 1577 閱讀 1672

31. 第二個引數型別是tuple,僅在將structure對映到乙個已有的資料型別上時使用,即在tuple裡已有的資料型別以及資料型別定義,比如:x = zeros(3, dtype=(』i4』,[(』r』,』u1』), (』g』,』u1』), (』b』,』u1』), (』a』,』u1』)])),這樣就覆蓋了預設名稱(f0,f1之類),不過返回沒搞明白,為啥是乙個1*3的array?行為有點像字典,比如可以這樣引用:x[』r』](預設的話是x[』f1』]),返回的是原資料,而非拷貝。

32. 第三個型別是列表,元素是tuple,每個tuple裡,可以有名稱、型別、shape(可選)的定義。用法:x = np.zeros(3, dtype=[(』x』,』f4』),(』y』,np.float32),(』value』,』f4』,(2,2))])。

33. 更加複雜的是字典,有兩種定義方式。一是給鍵名names和formats指定長度相等的列表為鍵值,其中names必須為字串。還有兩個可選的鍵名offsets和titles。例子:x = np.zeros(3, dtype=)。另一種方式是鍵名是name的值, 鍵值其他鍵名的值是組成的tuple。這裡offset是必需的。例子:x = np.zeros(3, dtype=)。

34. 檢視name:x.dtype.names(dtype是個物件)。也可以通過賦值進行調整:x.dtype.names = (』x』, 』y』)。還可以像字典一樣檢視field:x.dtype.fields[』x』][2]。

35. 接下來的內容跟「類」這個概念有關,我到現在也沒搞明白,當然也沒怎麼真正努力去試圖理解它。這次就硬著頭皮逼一逼自己,看能不能得到一鱗半爪的。首先,子類化ndarray返回的是乙個拷貝,正因為此子類化的方法與標準的做法不太一樣。

36. 比如初始化時最開始用__new__,然後通常是呼叫__init__,二者都可以初始化類例項,不過ndarray沒有__init__方法,所有初始化都是由__new__完成的。使用__new__的好處是可以返回其他類的例項,而__init__不行。

37. 子類物件的屬性需要繼承原物件的,但是__new__不能完成這個功能,所以需要__array_finalize__方法把原物件的屬性轉移過來。

38. 如果用ufunc(通用函式,universal function)處理自定的和ndarray類例項的話,會呼叫到__array_wrap__方法,把結果轉換成子類的例項。預設狀態下__array_wrap__呼叫__array_finalize__。這個方法需要至少乙個引數,是ufunc處理的物件,還有乙個可選的引數parameter。有的ufunc返回乙個三元tuple,包括ufunc名稱、引數和domain,作為parameter。

39. np通過base屬性來追蹤物件在記憶體中的位置,這樣可以使得在刪除view的賦值是不刪除原資料本事。原來的array的base一般是none,如果是view,那麼其base是所view的原array的名稱。

user guide目前需要看的到此為止,感覺淨是array的介紹,沒講什麼ufunc,可能是相關的部分還沒寫吧。網上找了一些資料,改日再看。另外,現在開始看那些python教程裡關於類和oop的部分應該能加深理解了。

ndarray類內容一覽表

numpy數學函式一覽表

numpy簡明教程 1

讀的是numpy user guide release 1.3,官方另有一本reference,600多頁,還是先讀這個省事兒的。凡例 a.float 表示物件型別是float,用時不用加 和 b.中的跳格表示換行。chap 2 numpy basics 1.import numpy as np,沿...

NumPy簡明教程(一 簡介)

用python在arcgis的開發中,對numpy的接觸越來越多,從現在開始就將以前的numpy筆記整理一下,慢慢放出來。供有需要的朋友參考。python 中提供了list 容器,可以當作陣列使用。但列表中的元素可以是任何物件,因此列表中儲存的是物件的指標,這樣一來,為了儲存乙個簡單的列表 1,2,...

GCC簡明教程(2)

說明 簡單,但清晰的gcc小白教程。gnu c和c 編譯器分別是gcc和g 本小結分別介紹。編輯好hello.c檔案,可以使用notepad 或者vim編輯。hello.c include int main 編譯hello.c,使用gcc命令,如下 gcc hello.c 編譯和鏈結原始檔 hell...