NumPy-1-26-中文文件-三十-

绝不原创的飞龙發表於2024-06-24

NumPy 1.26 中文文件(三十)

原文:numpy.org/doc/

NumPy 1.6.1 釋出說明

原文:numpy.org/doc/1.26/release/1.6.1-notes.html

這是 1.6.x 系列的純粹修復 bug 版本。

修復的問題

  • 1834: 特定形狀下 einsum 失敗

  • 1837: 特定陣列形狀下 einsum 報 nan 錯誤或導致 Python 卡死

  • 1838: 物件<->結構化型別陣列的迴歸

  • 1851: 1.6.0 版本基於 SWIG 的程式碼迴歸

  • 1863: 在使用 astype() 複製陣列時產生錯誤結果

  • 1870: 修復物件陣列賦值的極端情況

  • 1843: Py3k: 修復 recarray 的錯誤

  • 1885: nditer: 檢測雙重約簡迴圈錯誤

  • 1874: f2py: 修復--include_paths bug

  • 1749: 修復 ctypes.load_library()

  • 1895/1896: iter: 寫入運算元未始終正確緩衝

修復的問題

  • 1834: 特定形狀下 einsum 失敗

  • 1837: 特定陣列形狀下 einsum 報 nan 錯誤或導致 Python 卡死

  • 1838: 物件<->結構化型別陣列的迴歸

  • 1851: 1.6.0 版本基於 SWIG 的程式碼迴歸

  • 1863: 在使用 astype() 複製陣列時產生錯誤結果

  • 1870: 修復物件陣列賦值的極端情況

  • 1843: Py3k: 修復 recarray 的錯誤

  • 1885: nditer: 檢測雙重約簡迴圈錯誤

  • 1874: f2py: 修復--include_paths bug

  • 1749: 修復 ctypes.load_library()

  • 1895/1896: iter: 寫入運算元未始終正確緩衝

NumPy 1.6.0 發行說明

原文:numpy.org/doc/1.26/release/1.6.0-notes.html

此版本包括多個新功能,以及 numerous bug 修復和改進的文件。它向後相容 1.5.0 版本,並支援 Python 2.4 - 2.7 和 3.1 - 3.2。

亮點

  • 重新引入了日期時間資料型別支援,以處理陣列中的日期。

  • 新的 16 位浮點型別

  • 一個新的迭代器,可以提高許多函式的效能。

新功能

新的 16 位浮點型別

此版本增加了對 IEEE 754-2008 二進位制 16 格式的支援,可用作資料型別 numpy.half。在 Python 中,此型別的行為類似於 floatdouble,並且 C 擴充套件可以透過公開的半浮點 API 新增對其的支援。

新的迭代器

已新增一個新的迭代器,用單個物件和 API 替換現有迭代器和多迭代器的功能。此迭代器可以很好地處理不同於 C 或 Fortran 連續的通用記憶體佈局,並處理標準 NumPy 和自定義廣播。由 ufuncs 提供的緩衝,自動資料型別轉換和可選輸出引數,雖然難以在其他地方複製,但現在可以透過此迭代器來使用。

Legendre, Laguerre, Hermite, HermiteE 多項式在 numpy.polynomial

擴充套件了多項式包中可用的多項式的數量。此外,已新增了新的 window 屬性到類中,以指定 domain 對映到的範圍。這對 Legendre、Laguerre 和 HermiteE 多項式特別有用,它們的自然域是無限的,並提供了一種更直觀的方式來獲取正確的值對映,而不用在域上施加不自然的技巧。

numpy.f2py 中增加了對 Fortran 假定形狀陣列和大小函式的支援

F2py 現在支援包裝使用假定形狀陣列的 Fortran 90 例程。以前,這種例程可以從 Python 呼叫,但相應的 Fortran 例程接收到的假定形狀陣列為空陣列,導致了不可預測的結果。感謝 Lorenz Hüdepohl 指出了正確的介面例程與假定形狀陣列互動的方法。

此外,f2py 現在支援自動包裝使用兩個引數 size 函式的 Fortran 例程在維度規範中。

其他新函式

numpy.ravel_multi_index : 將多索引元組轉換為扁平索引陣列,應用邊界模式到索引。

numpy.einsum : 評估愛因斯坦求和約定。使用愛因斯坦求和約定,許多常見的多維陣列操作可以以簡單的方式表示。此函式提供了計算這樣的求和的方法。

numpy.count_nonzero : 計算陣列中非零元素的數量。

numpy.result_typenumpy.min_scalar_type:這些函式暴露了 ufuncs 和其他操作使用的底層型別提升,用於確定輸出型別。這些函式改進了numpy.common_typenumpy.mintypecode,它們提供了類似的功能,但與 ufunc 實現不匹配。

更改

預設錯誤處理

預設錯誤處理已從print更改為對所有情況的warn,除了underflow仍然是ignore

numpy.distutils

支援構建 Numpy 的多個新編譯器:OS X 上的 Portland Group Fortran 編譯器、PathScale 編譯器套件和 Linux 上的 64 位 Intel C 編譯器。

numpy.testing

測試框架增加了numpy.testing.assert_allclose,提供了比assert_almost_equalassert_approx_equalassert_array_almost_equal更方便的比較浮點陣列的方式。

C API

除了新迭代器和半資料型別的 API 之外,C API 還做了許多其他增加。ufunc 使用的型別提升機制透過PyArray_PromoteTypesPyArray_ResultTypePyArray_MinScalarType暴露出來。新增了一個新的列舉NPY_CASTING,用於控制允許的型別轉換型別。這由新函式PyArray_CanCastArrayToPyArray_CanCastTypeTo使用。透過PyArray_GetArrayParamsFromObject暴露了一種更靈活地將任意 Python 物件轉換為陣列的方法。

廢棄的特性

numpy.histogram中的“normed”關鍵字已被廢棄。其功能將由新的“density”關鍵字替代。

移除的特性

numpy.fft

已移除了refftrefft2refftnirefftirefft2irefftn這些函式,它們是不帶有名稱中的‘e’的相同函式的別名。

numpy.memmap

memmap 的sync()close()方法已被移除。改用flush()和“del memmap”。

numpy.lib

刪除了廢棄的函式numpy.unique1dnumpy.setmember1dnumpy.intersect1d_nunumpy.lib.ufunclike.log2

numpy.ma

numpy.ma模組中刪除了幾個已棄用的專案:

* ``numpy.ma.MaskedArray`` "raw_data" method
* ``numpy.ma.MaskedArray`` constructor "flag" keyword
* ``numpy.ma.make_mask`` "flag" keyword
* ``numpy.ma.allclose`` "fill_value" keyword 

numpy.distutils

移除了numpy.get_numpy_include函式,改用numpy.get_include

亮點

  • 重新引入了 datetime dtype 的支援來處理陣列中的日期。

  • 新的 16 位浮點型別。

  • 新的迭代器,提高了許多函式的效能。

新功能

新的 16 位浮點型別

此版本增加了對 IEEE 754-2008 二進位制 16 位格式的支援,可用作資料型別numpy.half。在 Python 中,該型別的行為類似於floatdouble,並且 C 擴充套件可以使用公開的半浮點 API 來支援它。

新的迭代器

新增了新的迭代器,用單個物件和 API 取代現有迭代器和多迭代器的功能。這個迭代器可以很好地處理與 C 或 Fortran 緊密不相同的一般記憶體佈局,並且處理標準 NumPy 和定製廣播。 ufuncs 提供的緩衝、自動資料型別轉換和可選輸出引數,現在透過這個迭代器暴露出來,這些功能在其他地方很難複製。

numpy.polynomial中的 Legendre、Laguerre、Hermite 和 HermiteE 多項式

擴充套件了多項式包中可用的多項式數量。此外,為了指定domain對映到的範圍,已向類新增了新的window屬性。這在很大程度上對 Laguerre、Hermite 和 HermiteE 多項式特別有用,因為它們的自然域是無限的,並提供了更直觀的方法來獲得正確的值對映,而不用在域上玩弄不自然的技巧。

Fortran 假定形狀陣列和numpy.f2py中的 size 函式支援

F2py 現在支援封裝使用假定形狀陣列的 Fortran 90 例程。在此之前,這樣的例程可以從 Python 中呼叫,但相應的 Fortran 例程接收的是假定形狀陣列作為零長度陣列,這會導致不可預測的結果。感謝 Lorenz Hüdepohl 指出了與假定形狀陣列介面化例程的正確方法。

此外,f2py 現在支援自動封裝在維度規範中使用兩個引數size函式的 Fortran 例程。

其他新功能

numpy.ravel_multi_index:將多索引元組轉換為扁平索引陣列,同時將邊界模式應用於索引。

numpy.einsum:評估愛因斯坦求和約定。使用愛因斯坦求和約定,許多常見的多維陣列操作可以用簡潔的方式表示。此功能提供了一種計算這樣的求和的方法。

numpy.count_nonzero:計算陣列中非零元素的數量。

numpy.result_typenumpy.min_scalar_type:這些函式暴露了 ufunc 和其他操作使用的底層型別提升,以確定輸出型別。這些函式改進了numpy.common_typenumpy.mintypecode,它們提供了類似的功能,但與 ufunc 實現不匹配。

新的 16 位浮點型別

此版本新增了對 IEEE 754-2008 二進位制 16 格式的支援,作為資料型別numpy.half可用。在 Python 中,該型別的行為類似於floatdouble,並且 C 擴充套件可以透過暴露的半浮點 API 為其新增支援。

新的迭代器

已新增新的迭代器,替代了現有迭代器和多迭代器的功能,使用單個物件和 API。這個迭代器適用於一般的記憶體佈局,不同於 C 或 Fortran 連續,並處理標準的 NumPy 和自定義廣播。這個迭代器現在公開了緩衝、自動資料型別轉換和可選的輸出引數,這些是 ufuncs 提供的但其他地方難以複製的功能。

numpy.polynomial 中的 Legendre、Laguerre、Hermite 和 HermiteE 多項式

擴充套件了多項式包中可用的多項式數量。此外,新新增了一個 window 屬性到類中,用於指定 domain 對映的範圍。這對於 Laguerre、Hermite 和 HermiteE 多項式特別有用,它們的自然域是無限的,提供了一個更直觀的方法來獲取正確的值對映,而不必用域進行不自然的處理。

numpy.f2py 中支援 Fortran 假定形狀陣列和 size 函式。

F2py 現在支援包裝使用假定形狀陣列的 Fortran 90 例程。之前這樣的例程可以從 Python 中呼叫,但相應的 Fortran 例程接收到的假定形狀陣列作為零長度陣列,這會導致不可預測的結果。感謝 Lorenz Hüdepohl 指出了與假定形狀陣列介面例程的正確方式。

此外,f2py 現在支援自動包裝使用兩個引數 size 函式在維度規範中的 Fortran 例程。

其他新功能

numpy.ravel_multi_index:將多索引元組轉換為一維索引陣列,應用邊界模式到索引。

numpy.einsum:求解愛因斯坦求和約定。使用愛因斯坦求和約定,許多常見的多維陣列操作可以以簡單的方式表示。這個函式提供了一種計算這樣的求和的方法。

numpy.count_nonzero:計算陣列中非零元素的個數。

numpy.result_typenumpy.min_scalar_type:這些函式公開了用於決定輸出型別的型別提升,ufuncs 和其他操作使用這些提升。這些函式優於 numpy.common_typenumpy.mintypecode,它們提供了類似的功能,但與 ufunc 實現不匹配。

變更

預設錯誤處理

預設錯誤處理已從 print 更改為 warn,除了 underflow 仍然是 ignore

numpy.distutils

支援使用多個新編譯器構建 Numpy:在 OS X 上的 Portland Group Fortran 編譯器,PathScale 編譯套件以及在 Linux 上的 64 位 Intel C 編譯器。

numpy.testing

測試框架增加了 numpy.testing.assert_allclose,比 assert_almost_equalassert_approx_equalassert_array_almost_equal 更方便地比較浮點陣列的方法。

C API

除了對於新迭代器和半資料型別的 API 之外,C API 還增加了一些其他的功能。ufuncs 所使用的型別提升機制可透過PyArray_PromoteTypesPyArray_ResultTypePyArray_MinScalarType來訪問。還新增了一個控制允許哪些型別轉換的列舉NPY_CASTING。新的函式PyArray_CanCastArrayToPyArray_CanCastTypeTo會使用這個列舉。透過PyArray_GetArrayParamsFromObject還增加了一種更靈活的處理任意 Python 物件轉換為陣列的方式。

預設錯誤處理方式

所有除了underflow之外,預設錯誤處理方式已經從print變更為warn

numpy.distutils

新增了對於構建 Numpy 的幾種新編譯器的支援:OS X 上的 Portland Group Fortran 編譯器,PathScale 編譯器套件和 Linux 上的 64 位 Intel C 編譯器。

numpy.testing

測試框架增加了numpy.testing.assert_allclose,提供了比assert_almost_equalassert_approx_equalassert_array_almost_equal更方便的比較浮點陣列的方法。

C API

除了對於新迭代器和半資料型別的 API 之外,C API 還增加了一些其他的功能。ufuncs 所使用的型別提升機制可透過PyArray_PromoteTypesPyArray_ResultTypePyArray_MinScalarType來訪問。還新增了一個控制允許哪些型別轉換的列舉NPY_CASTING。新的函式PyArray_CanCastArrayToPyArray_CanCastTypeTo會使用這個列舉。透過PyArray_GetArrayParamsFromObject還增加了一種更靈活的處理任意 Python 物件轉換為陣列的方式。

棄用的功能

numpy.histogram中的“normed”關鍵字已被棄用。它的功能將由新的“density”關鍵字來代替。

移除的功能

numpy.fft

函式refftrefft2refftnirefftirefft2irefftn,它們是同名函式的別名,名稱中不帶‘e’,已經被刪除。

numpy.memmap

memmap 的sync()close()方法已被移除。使用flush()和“del memmap”代替。

numpy.lib

移除了棄用的函式numpy.unique1dnumpy.setmember1dnumpy.intersect1d_nunumpy.lib.ufunclike.log2

numpy.ma

numpy.ma模組中移除了一些棄用的項:

* ``numpy.ma.MaskedArray`` "raw_data" method
* ``numpy.ma.MaskedArray`` constructor "flag" keyword
* ``numpy.ma.make_mask`` "flag" keyword
* ``numpy.ma.allclose`` "fill_value" keyword 

numpy.distutils

移除了函式refftrefft2refftnirefftirefft2irefftn,它們是同名函式的別名,名稱中不帶‘e’。

numpy.fft

移除了函式refftrefft2refftnirefftirefft2irefftn,它們是同名函式的別名,名稱中不帶‘e’。

numpy.memmap

memmap 的sync()close()方法已被移除。使用flush()和“del memmap”代替。

numpy.lib

移除了棄用的函式numpy.unique1dnumpy.setmember1dnumpy.intersect1d_nunumpy.lib.ufunclike.log2

numpy.ma

numpy.ma模組中移除了一些棄用的項:

* ``numpy.ma.MaskedArray`` "raw_data" method
* ``numpy.ma.MaskedArray`` constructor "flag" keyword
* ``numpy.ma.make_mask`` "flag" keyword
* ``numpy.ma.allclose`` "fill_value" keyword 

numpy.distutils

函式numpy.get_numpy_include已移除,請使用numpy.get_include代替。

NumPy 1.5.0 版本釋出說明

原文:numpy.org/doc/1.26/release/1.5.0-notes.html

亮點

Python 3 相容性

這是與 Python 3 相容的第一個 NumPy 釋出版。對於 Python 3 和 Python 2 的支援是透過單一的程式碼庫完成的。關於變更的詳細說明可以在web.archive.org/web/20100814160313/http://projects.scipy.org/numpy/browser/trunk/doc/Py3K.txt找到。

注意,Numpy 的測試框架依賴於 nose,nose 目前還沒有相容 Python 3 的釋出版本。可以在web.archive.org/web/20100817112505/http://bitbucket.org/jpellerin/nose3/找到適用於 Python 3 的工作分支。

SciPy 的移植到 Python 3 預計很快就會完成。

PEP 3118相容性

在這個版本的 Numpy 中完全支援由 PEP 3118 描述的新緩衝區協議。在 Python 版本 >= 2.6 中,Numpy 陣列暴露了緩衝區介面,並且 array()、asarray()和其他函式可以接受新式緩衝區作為輸入。

新特性

複雜數轉換成實數的警告

當將複數轉換為實數時,Numpy 現在會發出numpy.ComplexWarning。例如:

>>> x = np.array([1,2,3])
>>> x[:2] = np.array([1+2j, 1-2j])
ComplexWarning: Casting complex values to real discards the imaginary part 

這個強制轉換會丟棄虛部,這在所有情況下可能並不是預期的行為,因此會發出警告。這個警告可以透過標準方法關閉:

>>> import warnings
>>> warnings.simplefilter("ignore", np.ComplexWarning) 

ndarrays 的 Dot 方法

ndarrays 現在也有點積的方法,可以以鏈式的方式書寫矩陣乘積,如下所示:

>>> a.dot(b).dot(c) 

而不是更長的替代方式

>>> np.dot(a, np.dot(b, c)) 

linalg.slogdet 函式

slogdet 函式返回矩陣的行列式的符號和對數。由於行列式可能涉及許多小/大值的乘積,因此其結果通常比簡單乘法得到的結果更準確。

新的標頭檔案

新的標頭檔案 ndarraytypes.h 包含了 ndarrayobject.h 中不依賴於 PY_ARRAY_UNIQUE_SYMBOL 和 NO_IMPORT/_ARRAY 宏的符號。廣義上來說,這些符號是型別、typedef 和列舉;陣列函式呼叫則保留在 ndarrayobject.h 中。這樣使用者可以包括與陣列相關的型別和列舉而不需要關注宏擴充套件及其副作用。

變更

多項式.polynomial

  • polyint 和 polyder 函式現在檢查指定的積分或導數次數是否為非負整數。數字 0 對於這兩個函式都是有效值。

  • Polynomial 類新增了一個 degree 方法。

  • Polynomial 類新增了一個 trimdeg 方法。它的操作方式與 truncate 相似,只是引數是所需結果的次數,而不是係數的數量。

  • Polynomial.fit 現在使用 None 作為擬合的預設域。預設的 Polynomial 域可以透過使用 [] 作為域值來指定。

  • 在 polyfit 和 Polynomial.fit 中都可以使用權重。

  • 在 Polynomial 類中新增了一個 linspace 方法以便於繪圖。

  • 增加了 polymulx 函式。

polynomial.chebyshev

  • 現在 chebint 和 chebder 函式會檢查指定的積分或導數次數是否為非負整數。這兩個函式的有效值為數字 0。

  • 在切比雪夫類中新增了一個 degree 方法。

  • 在切比雪夫類中增加了一個 trimdeg 方法。它的操作方式與 truncate 相同,但引數是所需結果的次數,而不是係數的數量。

  • Chebyshev.fit 現在使用 None 作為擬合的預設域。預設的 Chebyshev 域可以透過使用 [] 作為域值來指定。

  • 在 chebfit 和 Chebyshev.fit 中都可以使用權重。

  • 在切比雪夫類中新增了一個 linspace 方法以便於繪圖。

  • 新增了 chebmulx 函式。

  • 新增了第一和第二種切比雪夫點的函式。

直方圖

經過兩年的過渡期,histogram 函式的舊行為已經停用,並移除了“new”關鍵字。

相關

在 1.4.0 中,correlate 的舊行為已經被棄用,新行為(交叉相關的常見定義)現在是預設行為。

突出特點

Python 3 相容性

這是第一個相容 Python 3 的 NumPy 釋出版。支援 Python 3 和 Python 2 是從一個程式碼庫完成的。關於變化的詳細說明可以在web.archive.org/web/20100814160313/http://projects.scipy.org/numpy/browser/trunk/doc/Py3K.txt找到。

注意,Numpy 的測試框架依賴於 nose,後者還沒有適用於 Python 3 的釋出版。然而,可以在web.archive.org/web/20100817112505/http://bitbucket.org/jpellerin/nose3/找到一個適用於 Python 3 的工作中的 nose 分支。

預計 SciPy 將很快完成向 Python 3 的移植。

PEP 3118 相容性

根據 PEP 3118 描述的新緩衝區協議在該版本的 NumPy 中得到完全支援。在 Python 版本 >= 2.6 中,NumPy 陣列公開了緩衝區介面,array()、asarray() 和其他函式接受新風格的緩衝區作為輸入。

Python 3 相容性

這是第一個相容 Python 3 的 NumPy 釋出版。支援 Python 3 和 Python 2 是從一個程式碼庫完成的。關於變化的詳細說明可以在web.archive.org/web/20100814160313/http://projects.scipy.org/numpy/browser/trunk/doc/Py3K.txt找到。

注意,Numpy 測試框架依賴於 nose,但是 nose 目前還沒有與 Python 3 相容的版本。可以在web.archive.org/web/20100817112505/http://bitbucket.org/jpellerin/nose3/找到 nose 的 Python 3 分支。

預計 SciPy 將很快完成對 Python 3 的移植工作。

PEP 3118 相容性

PEP 3118 描述的新緩衝協議在這個版本的 Numpy 中得到了充分支援。在 Python 版本 >= 2.6 上,Numpy 陣列暴露了緩衝區介面,並且 array()、asarray()和其他函式接受新風格的緩衝區作為輸入。

新特性

警告:將複數轉換為實數

當複數被轉換為實數時,Numpy 現在會發出numpy.ComplexWarning警告。例如:

>>> x = np.array([1,2,3])
>>> x[:2] = np.array([1+2j, 1-2j])
ComplexWarning: Casting complex values to real discards the imaginary part 

實際上,轉換確實丟棄了虛部,而這在某些情況下可能不是預期的行為,因此會出現警告。可以透過標準方式關閉這個警告:

>>> import warnings
>>> warnings.simplefilter("ignore", np.ComplexWarning) 

陣列的點乘方法

Ndarrays 現在也有了點積的方法,這允許將矩陣乘積寫成如下的鏈式形式

>>> a.dot(b).dot(c) 

而不是更長的替代方法

>>> np.dot(a, np.dot(b, c)) 

linalg.slogdet 函式

slogdet 函式返回矩陣的符號和對數行列式。由於行列式可能涉及許多小/大的值的乘積,所以結果通常比簡單的乘法得到的結果更準確。

新的標題

新的標頭檔案 ndarraytypes.h 包含了不依賴於 PY_ARRAY_UNIQUE_SYMBOL 和 NO_IMPORT/_ARRAY 宏的 ndarrayobject.h 中的符號。總的來說,這些符號是型別、typedefs 和列舉;陣列函式呼叫留在了 ndarrayobject.h 中。這允許使用者包含與陣列相關的型別和列舉,而不需要擔心宏的擴充套件和它們的副作用。

警告:將複數轉換為實數

當複數被轉換為實數時,Numpy 現在會發出 numpy.ComplexWarning 警告。例如:

>>> x = np.array([1,2,3])
>>> x[:2] = np.array([1+2j, 1-2j])
ComplexWarning: Casting complex values to real discards the imaginary part 

實際上,轉換確實丟棄了虛部,而這在某些情況下可能不是預期的行為,因此會出現警告。可以透過標準方式關閉這個警告:

>>> import warnings
>>> warnings.simplefilter("ignore", np.ComplexWarning) 

陣列的點乘方法

Ndarrays 現在也有了點積的方法,這允許將矩陣乘積寫成如下的鏈式形式

>>> a.dot(b).dot(c) 

而不是更長的替代方法

>>> np.dot(a, np.dot(b, c)) 

linalg.slogdet 函式

slogdet 函式返回矩陣的符號和對數行列式。由於行列式可能涉及許多小/大的值的乘積,所以結果通常比簡單的乘法得到的結果更準確。

新的標題

新的標頭檔案 ndarraytypes.h 包含了不依賴於 PY_ARRAY_UNIQUE_SYMBOL 和 NO_IMPORT/_ARRAY 宏的 ndarrayobject.h 中的符號。廣義上講,這些符號是型別、typedef 和列舉;陣列函式呼叫留在 ndarrayobject.h 中。這允許使用者包含與陣列相關的型別和列舉,而無需關心宏的擴充套件和它們的副作用。

變更

多項式.多項式

  • polyint 和 polyder 函式現在會檢查指定的積分或導數次數是否為非負整數。對於這兩個函式來說,數字 0 是有效值。

  • 在多項式類中新增了 degree 方法。

  • 在多項式類中新增了 trimdeg 方法。它的操作類似於 truncate,除了引數是結果的期望度數,而不是係數的數量。

  • Polynomial.fit 現在使用 None 作為擬合的預設域。可以透過[]作為域值來指定預設的多項式域。

  • 權重可以在 polyfit 和 Polynomial.fit 中使用

  • 在多項式類中新增了 linspace 方法,以便繪圖。

  • 新增了 polymulx 函式。

多項式.切比雪夫

  • chebint 和 chebder 函式現在會檢查指定的積分或導數次數是否為非負整數。對於這兩個函式來說,數字 0 是有效值。

  • 在切比雪夫類中新增了 degree 方法。

  • 在切比雪夫類中新增了 trimdeg 方法。它的操作類似於 truncate,除了引數是結果的期望度數,而不是係數的數量。

  • 現在 Chebyshev 擬合使用 None 作為擬合的預設域。可以透過[]作為域值來指定預設的 Chebyshev 域。

  • 權重可以在 chebfit 和 Chebyshev.fit 中使用

  • 在切比雪夫類中新增了 linspace 方法,以便繪圖。

  • 新增了 chebmulx 函式。

  • 增加了第一、二類別的切比雪夫點的函式。

直方圖

經過兩年的過渡期後,直方圖函式的舊行為已經被淘汰,而“新”關鍵詞已被移除。

相關

相關函式的舊行為在 1.4.0 版中已被棄用,新行為(跨相關的通常定義)現在是預設行為。

多項式.多項式

  • polyint 和 polyder 函式現在會檢查指定的積分或導數次數是否為非負整數。對於這兩個函式來說,數字 0 是有效值。

  • 在多項式類中新增了 degree 方法。

  • 在多項式類中新增了 trimdeg 方法。它的操作類似於 truncate,除了引數是結果的期望度數,而不是係數的數量。

  • Polynomial.fit 現在使用 None 作為擬合的預設域。可以透過[]作為域值來指定預設的多項式域。

  • 權重可以在 polyfit 和 Polynomial.fit 中使用

  • 在多項式類中新增了 linspace 方法,以便繪圖。

  • 新增了 polymulx 函式。

polynomial.chebyshev

  • chebint 和 chebder 函式現在檢查指定的積分或導數次數是否為非負整數。0 是這兩個函式的有效值。

  • Chebyshev 類中新增了一個度方法。

  • Chebyshev 類中新增了一個 trimdeg 方法。它的功能類似於 truncate,但引數是期望結果的度數,而不是係數的數量。

  • Chebyshev.fit 現在預設使用 None 作為擬合的域。預設的切比雪夫域可以透過使用 [] 作為域值來指定。

  • 權重可以在 chebfit 和 Chebyshev.fit 中使用。

  • Chebyshev 類中新增了一個 linspace 方法,以方便繪圖。

  • 新增了 chebmulx 函式。

  • 新增了第一種和第二種切比雪夫點的函式。

直方圖

經過兩年過渡期後,直方圖函式的舊行為已經被淘汰,同時“new”關鍵字已經被移除。

互相關

correlate 在 1.4.0 版本中的舊行為已經被棄用,新行為(通常定義為互相關)現在是預設行為。

NumPy 1.4.0 釋出說明

numpy.org/doc/1.26/release/1.4.0-notes.html

此次小版本更新包含了眾多錯誤修復和一些新功能。與 1.3.0 版本相容。

亮點

  • 新的日期時間 dtype 支援來處理陣列中的日期

  • 更快的匯入時間

  • 擴充套件了對於 ufuncs 的陣列包裝機制

  • 新的鄰域迭代器(僅限 C 級別)

  • 在 npymath 中,新增了類似於 C99 的複數函式

新功能

擴充套件了對於 ufuncs 的陣列包裝機制

ndarray 新增了一個 array_prepare 方法,以便為子類提供更大的靈活性與 ufuncs 和類似 ufunc 的函式進行互動。ndarray 已經提供了 array_wrap,允許子類設定結果的陣列型別並在從 ufunc 中輸出時填充後設資料(如在 MaskedArray 的實現中所見)。對於某些應用程式,在進行操作之前提供檢查和填充後設資料是必要的,即在計算結果並填充之前。因此,在 ufunc 初始化輸出陣列後但計算結果和填充之前呼叫 array_prepare。這樣就可以進行檢查和引發錯誤,以防止可能會修改資料的操作。

自動檢測向前不相容性

以前,如果一個擴充套件是針對 NumPy 的版本 N 構建的,並在具有 NumPy M < N 的系統上使用,那麼 import_array 將會成功,這可能導致崩潰,因為版本 M 中沒有 N 中的某個函式。自 NumPy 1.4.0 開始,這將導致 import_array 失敗,因此錯誤將被及早捕獲。

新的迭代器

新增了一個新的鄰域迭代器到 C API 中。它可用於迭代陣列鄰域中的專案,並且可以自動處理邊界條件。可用的填充方式包括零填充和一填充,以及任意常數值、映象和迴圈填充。

新的多項式支援

新增了新的模組 chebyshev 和 polynomial。新的 polynomial 模組與 numpy 中當前的多項式支援不相容,但與新的 chebyshev 模組非常相似。對於大多數人來說,最顯著的不同之處在於係數的指數從低到高進行指定,低階函式不使用 Chebyshev 和 Polynomial 類作為引數,並且 Chebyshev 和 Polynomial 類都包含一個範圍。跨域之間的對映是線性替換,這兩個類可以互相轉換,例如一個域中的 Chebyshev 級數可以在另一個域中展開為多項式。新類通常應該替換低階函式,後者適用於希望構建自己的類的使用者。

新的模組不會自動匯入到 numpy 名稱空間中,必須使用 "import numpy.polynomial" 語句顯式匯入。

新的 C API

下列 C 函式已新增到 C API 中:

  1. PyArray_GetNDArrayCFeatureVersion:返回載入的 numpy 的API版本。
  2. PyArray_Correlate2 - 類似於 PyArray_Correlate,但實現了常規相關性的定義。 輸入不會進行交換,並且對於複雜陣列會進行共軛。
  3. PyArray_NeighborhoodIterNew:一個新的迭代器,用於在一個點的鄰域上進行迭代,並處理自動邊界。它在 C-API 參考的迭代器部分有詳細文件,你可以在 numpy.core 的 multiarray_test.c.src 檔案中找到一些示例。

新的 ufuncs

下列 ufuncs 已新增到 C API 中:

  1. copysign - 返回第一個引數的值,並用第二個引數的符號複製。
  2. nextafter - 返回第一個引數朝向第二個引數的下一個可表示的浮點值。

新定義

alpha 處理器現在已在 numpy/npy_cpu.h 中定義並可用。 已修復了對 PARISC 處理器的檢測失敗。 這些定義是:

  1. NPY_CPU_HPPA:PARISC
  2. NPY_CPU_ALPHA:Alpha

測試

  1. 棄用的裝飾器:這個裝飾器可用於在測試引發 DeprecationWarning 時避免混亂的測試輸出。
  2. assert_array_almost_equal_nulp:比較兩個浮點值陣列的新方法。 使用此函式,如果兩個值之間沒有很多可表示的浮點值,那麼它們被視為接近,因此在值波動很大時比 assert_array_almost_equal 更穩健。
  3. assert_array_max_ulp:如果兩個浮點值之間有超過 N 個可表示的數字,則引發斷言。
  4. assert_warns:如果可呼叫物件不生成適當類別的警告,則引發 AssertionError,而不會更改警告狀態。

重用 npymath

在 1.3.0 中,我們開始將可移植的 C 數學例程放在 npymath 庫中,以便人們可以使用它們來編寫可移植的擴充套件。不幸的是,很難輕鬆地連結到這個庫:在 1.4.0 中,numpy.distutils 增加了支援,以便第三方可以重用這個庫。有關更多資訊,請參閱 coremath 文件。

改進的集合操作

在 NumPy 先前版本中,一些集合函式(intersect1d,setxor1d,setdiff1d 和 setmember1d)如果輸入陣列包含重複項,則可能返回不正確的結果。 現在這些函式對包含重複項的輸入陣列能夠正確工作。 setmember1d 已重新命名為 in1d,因為隨著接受包含重複項的陣列,它不再是一個集合操作,而且在概念上類似於 Python 運算子'in'的逐元素版本。所有這些函式現在都接受布林關鍵字 assume_unique。 預設情況下,這是 False,但如果已知輸入陣列不包含重複項,則可以將其設定為 True,這可以增加函式的執行速度。

改進

  1. numpy 匯入速度明顯更快(根據平臺和計算機的不同,從 20%到 30%)

  2. 現在排序函式會將 nan 排在最後。

    • 真實的排序順序是[R,nan]
    • 複數排序順序為[R + Rj, R + nanj, nan + Rj, nan + nanj]

    具有相同 nan 放置的複數按照非 nan 部分排序。

  3. 型別比較函式與 nans 的新排序順序保持一致。Searchsorted 現在可以處理包含 nan 值的排序陣列。

  4. 複數除法更加抗溢位。

  5. 複雜數值的整數除法更加抗溢位。

廢棄功能

以下函式已被棄用:

  1. 相關性:它採用一個新的關鍵字引數 old_behavior。當為 True(預設值)時,它返回與以前相同的結果。當為 False 時,計算傳統相關性,並對複數陣列取共軛。舊行為將在 NumPy 1.5 中被刪除,並在 1.4 中引發 DeprecationWarning。
  2. unique1d:使用 unique 代替。unique1d 在 1.4 版將發出棄用警告,並將在 1.5 版中刪除。
  3. intersect1d_nu:使用 intersect1d 代替。intersect1d_nu 在 1.4 版將發出棄用警告,並將在 1.5 版中刪除。
  4. setmember1d:使用 in1d 代替。setmember1d 在 1.4 版將發出棄用警告,並將在 1.5 版中刪除。

以下引發錯誤:

  1. 當操作 0 維陣列時,numpy.max和其他函式僅接受axis = 0axis = -1axis = None。使用超出邊界的軸是一個錯誤的指示,所以 Numpy 現在對這些情況報錯。
  2. 不再允許指定axis> MAX_DIMS;Numpy 現在會報錯,而不是對axis = None做出類似的行為。

內部更改

在可用時使用 C99 複數函式

如果平臺支援,numpy 複數型別現在保證與 C99 複數型別 ABI 相容。此外,複數 ufunc 現在使用平臺 C99 函式而不是自己的函式。

拆分 multiarray 和 umath 原始碼

multiarray 和 umath 的原始碼已拆分為獨立的邏輯編譯單元。這應該使得新手更容易閱讀原始碼。

單獨的編譯

預設情況下,multiarray(和 umath)的每個檔案將合併為一個檔案進行編譯,但如果 NPY_SEPARATE_COMPILATION 環境變數設定為非負值,則啟用每個檔案的實驗性單獨編譯。這使得在核心 numpy 上的編譯/除錯周期更快。

單獨的核心數學庫

新增了以下函式:

  • npy_copysign
  • npy_nextafter
  • npy_cpack
  • npy_creal
  • npy_cimag
  • npy_cabs
  • npy_cexp
  • npy_clog
  • npy_cpow
  • npy_csqr
  • npy_ccos
  • npy_csin

亮點

  • 新的日期時間 dtype 支援,以處理陣列中的日期。

  • 匯入時間更快

  • 對 ufuncs 進行擴充套件陣列包裝機制

  • 新的鄰域迭代器(僅限 C 級別)

  • npymath 中類似 C99 的複數函式

新功能

對 ufuncs 進行擴充套件陣列包裝機制

ndarray 已新增了 array_prepare 方法,為子類提供與 ufunc 和類似 ufunc 函式更大的靈活性進行互動。ndarray 已提供 array_wrap,允許子類設定結果的陣列型別並在 ufunc 輸出時填充後設資料(如在 MaskedArray 的實現中所見)。對於某些應用程式,有必要在“進入”過程中提供檢查和填充後設資料。因此,array_prepare 在 ufunc 初始化輸出陣列後但在計算結果和填充結果之前呼叫。透過這種方式,可以在可能修改資料的操作之前進行檢查並引發錯誤。

自動檢測向前不相容性

以前,如果擴充套件程式是根據 NumPy 的版本 N 進行構建的,並且在具有 NumPy M < N 的系統上使用,import_array 將成功,這可能導致崩潰,因為版本 M 中沒有版本 N 中的函式。從 NumPy 1.4.0 開始,這將導致 import_array 失敗,因此錯誤將被及早捕獲。

新的迭代器

C API 中新增了一個新的鄰域迭代器。它可用於迭代陣列的鄰域項,並且可以自動處理邊界條件。可以使用零和一填充,以及任意的常數值,映象和迴圈填充。

新的多項式支援

新新增了模組 chebyshev 和 polynomial。新的 polynomial 模組與 numpy 中現有的多項式支援不相容,但與新的 chebyshev 模組類似。對於大多數人來說,最明顯的區別是係數從低到高冪次的順序,低階函式與 Chebyshev 和 Polynomial 類作為引數不起作用,並且 Chebyshev 和 Polynomial 類包含一個定義域。域之間的對映是線性替換,兩個類可以互相轉換,例如,在一個域中的 Chebyshev 系列可以在另一個域中展開為多項式。新的類應該通常用於替代低階函式,後者提供給那些希望構建自己類的人使用。

新的模組不會自動匯入 numpy 名稱空間,必須使用“import numpy.polynomial”語句顯式引入它們。

新的 C API

已向 C API 新增了以下 C 函式:

  1. PyArray_GetNDArrayCFeatureVersion:返回載入的 numpy 的API版本。
  2. PyArray_Correlate2 - 類似於 PyArray_Correlate,但實現了經典的相關性定義。輸入未進行交換,並且對於複數陣列,進行共軛操作。
  3. PyArray_NeighborhoodIterNew - 一個新的迭代器,用於迭代點的鄰域,並自動處理邊界。在 C-API 參考的迭代器部分有文件介紹,在 numpy.core 的 multiarray_test.c.src 檔案中可以找到一些示例。

新的 ufuncs

已向 C API 新增了以下 ufuncs:

  1. copysign - 返回從第二個引數複製標誌的第一個引數的值。
  2. nextafter - 返回第一個引數朝向第二個引數的下一個可表示浮點值。

新的定義

現在在 numpy/npy_cpu.h 中定義並可用的 alpha 處理器。已修復對 PARISC 處理器的檢測失敗。這些定義是:

  1. NPY_CPU_HPPA:PARISC
  2. NPY_CPU_ALPHA:Alpha

測試

  1. 廢棄的裝飾器:可以使用此裝飾器來避免在測試時垃圾資料測試輸出,同時確保修飾的測試有效引發 DeprecationWarning。
  2. assert_array_almost_equal_nulp:用於比較兩個浮點值陣列的新方法。透過該函式,如果兩個值之間沒有很多可表示的浮點值,則被認為是接近的,因此比 assert_array_almost_equal 在值波動很大時更加健壯。
  3. assert_array_max_ulp:如果兩個浮點值之間有多於 N 個可表示數,就引發一個斷言。
  4. assert_warns:如果可呼叫物件未生成適當類別的警告,則引發 AssertionError,而不更改警告狀態。

重用 npymath

在 1.3.0 版本中,我們開始將可移植的 C 數學例程放在 npymath 庫中,以便人們可以使用它們來編寫可移植的擴充套件。不幸的是,很難與此庫進行連結:在 1.4.0 版本中,numpy.distutils 新增了對此庫進行重用的支援。有關更多資訊,請參閱 coremath 文件。

改進的集合操作

在 NumPy 的先前版本中,如果輸入陣列包含重複項,一些設定函式(intersect1d、setxor1d、setdiff1d 和 setmember1d)可能返回不正確的結果。現在,對於包含重複項的輸入陣列,這些函式現在能夠正確工作。setmember1d 已重新命名為 in1d,因為隨著接受包含重複項的陣列的變更,它不再是一個集合操作,而且在概念上類似於 Python 運算子 'in' 的元素級版本。所有這些函式現在都接受布林關鍵字 assume_unique。這預設為 False,但如果已知輸入陣列不包含重複項,則可以設定為 True,這可以提高函式的執行速度。

對 ufuncs 的擴充套件陣列包裝機制

ndarray 新增了一個 array_prepare 方法,以便為子類提供更大的靈活性與 ufuncs 和類似 ufunc 的函式互動。ndarray 已經提供了 array_wrap,它允許子類設定結果的陣列型別並在 ufunc 返回結果時填充後設資料(如 MaskedArray 的實現中所見)。對於某些應用程式,有必要在進行運算之前提供檢查和填充後設資料。因此,在初始化輸出陣列但在計算結果和填充之前,即可呼叫 array_prepare。這樣,就可以進行檢查並在可能修改資料的操作之前引發錯誤。

發現向前不相容的自動檢測

以前,如果擴充套件是針對版本 N 的 NumPy 構建的,並且在具有 NumPy M < N 的系統上使用,則 import_array 將成功,這可能會導致崩潰,因為版本 M 中沒有版本 N 的功能。從 NumPy 1.4.0 開始,這將導致 import_array 失敗,因此錯誤將被早期捕獲。

新迭代器

新的鄰域迭代器已新增到 C API 中。它可用於在陣列的鄰域中迭代專案,並可以自動處理邊界條件。可以使用零和一填充,以及任意常數值,映象和迴圈填充。

新的多項式支援

已新增新模組 chebyshev 和 polynomial。新的多項式模組與 numpy 中當前的多項式支援不相容,但與新的 chebyshev 模組相似。對大多數人來說,最明顯的區別是係數是從低到高階指定,低階函式不與 Chebyshev 和 Polynomial 類作為引數一起工作,並且 Chebyshev 和 Polynomial 類包含一個域。域之間的對映是線性替換,兩個類可以彼此轉換,例如,一個域中的 Chebyshev 級數可以擴充套件為另一個域中的多項式。通常應使用新類,而不是低階函式,後者是為那些希望構建自己的類的人提供的。

新模組不會自動匯入 numpy 名稱空間,必須透過“import numpy.polynomial”語句明確匯入。

新 C API

下列 C 函式已新增到 C API 中:

  1. PyArray_GetNDArrayCFeatureVersion:返回載入的 numpy 的API版本。
  2. PyArray_Correlate2 - 像 PyArray_Correlate 一樣,但實現了常規的相關性定義。輸入不會交換,並且對於複數陣列會取共軛。
  3. PyArray_NeighborhoodIterNew - 一個新的迭代器,可用於迭代點的鄰域,並具有自動邊界處理。在 C-API 參考的迭代器部分中有文件,您可以在 numpy.core 的 multiarray_test.c.src 檔案中找到一些示例。

新 ufuncs

下列 ufuncs 已新增到 C API 中:

  1. copysign - 返回具有從第二個引數複製的符號的第一個引數的值。
  2. nextafter - 返回第一個引數朝向第二個引數的下一個可表示的浮點值。

新定義

現在在 numpy/npy_cpu.h 中定義並可用的 alpha 處理器。已修復 PARISC 處理器的檢測失敗。定義如下:

  1. NPY_CPU_HPPA:PARISC
  2. NPY_CPU_ALPHA:Alpha

Testing

  1. 棄用的裝飾器:此裝飾器可用於在測試 DeprecationWarning 在被裝飾的測試中有效觸發的同時避免使測試輸出混亂。
  2. assert_array_almost_equal_nulp: 用於比較兩個浮點值陣列的新方法。使用此函式,如果兩個值之間沒有許多可表示的浮點值,那麼它們被認為是接近的,因此比較多變的 assert_array_almost_equal 更加耐用。
  3. assert_array_max_ulp: 如果兩個浮點值之間有 N 個可表示的數字,則引發斷言。
  4. assert_warns: 如果可呼叫物件未生成適當類別的警告,則引發 AssertionError,而不會更改警告狀態。

重用 npymath

在 1.3.0 版本中,我們開始將可移植的 C 數學函式放入 npymath 庫中,以便人們可以使用這些函式編寫可移植的擴充套件。不幸的是,很難輕鬆地連結到此庫:在 1.4.0 版本中,numpy.distutils 新增了對此庫的支援,以便第三方可以重用此庫。有關更多資訊,請參見 coremath 文件。

改進的集合操作

在之前的 NumPy 版本中,如果輸入陣列包含重複項,則某些集合函式(intersect1d、setxor1d、setdiff1d 和 setmember1d)可能會返回不正確的結果。現在,這些函式已正確處理具有重複項的輸入陣列。setmember1d 已重新命名為 in1d,因為隨著接受包含重複項的陣列的更改,它不再是一個集合操作,並且從概念上類似於 Python 運算子'in'的逐元素版本。所有這些函式現在接受布林關鍵字 assume_unique。預設情況下為 False,但如果已知輸入陣列不包含重複項,則可以將其設定為 True,這可以提高函式的執行速度。

改進

  1. numpy 匯入速度明顯提高(根據平臺和計算機不同,提高了 20 至 30%)

  2. sort 函式現在將 nan 排序到末尾。

    • 實數排序順序是[R, nan]
    • 複雜排序順序是[R + Rj, R + nanj, nan + Rj, nan + nanj]

    如果複雜數具有相同的 nan 位置,則根據非 nan 部分(如果存在)對其進行排序。

  3. 型別比較函式已與 nan 的新排序一致。現在,對包含 nan 值的排序陣列進行搜尋現在可以使用 searchsorted。

  4. 複雜除法現在對溢位更加抗性強。

  5. 複雜整除現在對溢位更加抗性強。

棄用

以下函式已棄用:

  1. correlate: 增加了一個新的關鍵字引數 old_behavior。當 True(預設值)時,返回與以前相同的結果。當為 False 時,計算常規相關性,並針對複數陣列取共軛。舊行為將在 NumPy 1.5 中移除,並在 1.4 中引發棄用警告。
  2. unique1d: 使用 unique 代替。unique1d 在 1.4 版本中引發棄用警告,並將在 1.5 版本中移除。
  3. intersect1d_nu: 使用 intersect1d 代替。intersect1d_nu 在 1.4 版本中引發棄用警告,並將在 1.5 版本中移除。
  4. setmember1d: 使用 in1d 代替。setmember1d 在 1.4 版本中引發棄用警告,並將在 1.5 版本中移除。

以下引發錯誤:

  1. 在操作 0 維陣列時,numpy.max和其他函式僅接受axis=0axis=-1axis=None。使用超出邊界的軸表示存在錯誤,因此 Numpy 現在對這些情況丟擲錯誤。
  2. 不再允許指定 axis > MAX_DIMS;Numpy 現在會丟擲錯誤,而不是像axis=None一樣處理。

內部更改

在可用時使用 C99 複數函式

如果平臺支援,則 numpy 複數型別現在保證與 C99 複數型別相容。此外,複數 ufunc 現在使用平臺的 C99 函式,而不是我們自己的函式。

分離 multiarray 和 umath 原始碼

multiarray 和 umath 的原始碼已經分割為單獨的邏輯編譯單元。這樣做可以使原始碼更易於新手理解。

分離編譯

預設情況下,multiarray(和 umath)的每個檔案都會被合併為一個檔案進行編譯,就像以前一樣,但是如果 NPY_SEPARATE_COMPILATION 環境變數設定為非負值,則啟用了每個檔案的實驗性個別編譯。這使得在核心 numpy 上工作時,編譯/除錯迴圈速度更快。

分離核心數學庫

新增的函式:

  • npy_copysign
  • npy_nextafter
  • npy_cpack
  • npy_creal
  • npy_cimag
  • npy_cabs
  • npy_cexp
  • npy_clog
  • npy_cpow
  • npy_csqr
  • npy_ccos
  • npy_csin

在可用時使用 C99 複數函式

如果平臺支援,則 numpy 複數型別現在保證與 C99 複數型別相容。此外,複數 ufunc 現在使用平臺的 C99 函式,而不是我們自己的函式。

分離 multiarray 和 umath 原始碼

multiarray 和 umath 的原始碼已經分割為單獨的邏輯編譯單元。這樣做可以使原始碼更易於新手理解。

分離編譯

預設情況下,multiarray(和 umath)的每個檔案都會被合併為一個檔案進行編譯,就像以前一樣,但是如果 NPY_SEPARATE_COMPILATION 環境變數設定為非負值,則啟用了每個檔案的實驗性個別編譯。這使得在核心 numpy 上工作時,編譯/除錯迴圈速度更快。

分離核心數學庫

新增的函式:

  • npy_copysign
  • npy_nextafter
  • npy_cpack
  • npy_creal
  • npy_cimag
  • npy_cabs
  • npy_cexp
  • npy_clog
  • npy_cpow
  • npy_csqr
  • npy_ccos
  • npy_csin

NumPy 1.3.0 釋出說明

原文:numpy.org/doc/1.26/release/1.3.0-notes.html

此次較小更新包括大量錯誤修復、官方 python 2.6 支援以及一些新功能,如通用 ufuncs。

亮點

Python 2.6 支援

Python 2.6 現在在包括 windows 在內的所有之前支援的平臺上得到支援。

www.python.org/dev/peps/pep-0361/

通用 ufuncs

不僅需要迴圈遍歷標量函式,還需要迴圈遍歷向量(或陣列)函式,如 scipy.org/scipy/numpy/wiki/GeneralLoopingFunctions 上所解釋的。我們建議透過泛化通用函式(ufuncs)來實現這一概念,並提供一個向 numpy 程式碼庫新增~500 行的 C 實現。在當前(專門化的)ufuncs 中,基本功能僅限於逐元素操作,而泛化版支援“子陣列”逐“子陣列”操作。Perl 向量庫 PDL 提供類似的功能,並在以下重新使用了其術語。

每個通用 ufunc 都有與之關聯的資訊,說明輸入的“核心”維度是什麼,以及相應的輸出維度(逐元素 ufuncs 具有零個核心維度)。所有引數的核心維度列表稱為 ufunc 的“簽名”。例如,ufunc numpy.add 的簽名為“(),()->()”,定義了兩個標量輸入和一個標量輸出。

另一個例子是(參見 GeneralLoopingFunctions 頁面)具有簽名“(i),(i)->()”的函式 inner1d(a,b)。這將沿著每個輸入的最後一個軸應用內積,但保持其餘索引不變。例如,當 a 的形狀為(3,5,N) 而 b 的形狀為(5,N) 時,這將返回形狀為(3,5) 的輸出。底層的基本功能被呼叫了 3*5 次。在簽名中,我們為每個輸入指定一個核心維度“(i)”和一個輸出的零個核心維度“(”),因為它接受兩個 1 維陣列並返回一個標量。透過使用相同的名稱“i”,我們指定這兩個對應維度應該是相同大小的(或其中一個大小為 1,將被廣播)。

核心維度之外的維度稱為“迴圈”維度。在上面的示例中,這對應於(3,5)。

通常的 numpy“廣播”規則適用,其中籤名確定每個輸入/輸出物件的維度如何分為核心和迴圈維度:

當輸入陣列的維度小於對應的核心維度數量時,在其形狀之前加入 1。將核心維度從所有輸入中移除,並將剩餘維度廣播;定義迴圈維度。輸出由迴圈維度加上輸出核心維度給出。

實驗性的 Windows 64 位支援

現在可以在 Windows 64 位系統上(僅限 amd64,不支援 IA64)使用 MS 編譯器和 mingw-w64 編譯器構建 Numpy:

這是高度實驗性的:不要用於生產用途。請參閱 INSTALL.txt,Windows 64 位部分,瞭解限制和如何自行構建的更多資訊。

新功能

格式化問題

浮點格式現在由 numpy 處理,而不是由 C 執行時處理:這樣可以實現與語言環境無關的格式化,更健壯的 fromstring 和相關方法。特殊值(inf 和 nan)在各個平臺上也更一致(nan vs IND/NaN 等),並且與最新的 Python 格式處理(在 2.6 及更高版本)更一致。

max/min 中的 nan 處理

最大/最小 ufunc 現在可靠地傳遞 nan。如果其中一個引數是 nan,則返回 nan。這影響 np.min/np.max,amin/amax 和陣列方法 max/min。新增的 ufunc fmax 和 fmin 用於處理不傳播的 nan。

sign 中的 nan 處理

現在,ufunc sign 以 nan 返回 anan 的符號。

新的 ufuncs

  1. fmax - 對於整數型別和非 nan 浮點數,與最大值相同。如果一個引數是 nan,則返回非 nan 引數,如果兩個引數都是 nan,則返回 nan。

  2. fmin - 對於整數型別和非 nan 浮點數,與最小值相同。如果一個引數是 nan,則返回非 nan 引數,如果兩個引數都是 nan,則返回 nan。

  3. deg2rad - 將度數轉換為弧度,與弧度 ufunc 相同。

  4. rad2deg - 將弧度轉換為度數,與度數 ufunc 相同。

  5. log2 - 以 2 為底的對數。

  6. exp2 - 以 2 為底的指數。

  7. trunc - 將浮點數截斷至最靠近零的整數。

  8. logaddexp - 將儲存為對數的數字相加並返回結果的對數。

  9. logaddexp2 - 將儲存為基數 2 對數的數字相加並返回結果的基數 2 對數。

掩蔽陣列

包括幾個新功能和 bug 修復,其中包括:

  • 結構化陣列現在應該得到 MaskedArray 的全面支援(r6463,r6324,r6305,r6300,r6294…)
  • 小 bug 修復(r6356,r6352,r6335,r6299,r6298)
  • 改進了對 iter 的支援(r6326)
  • 使 baseclass、sharedmask 和 hardmask 對使用者可訪問(但是隻讀)
  • 文件更新

Windows 上的 gfortran 支援

現在可以將 Gfortran 用作 Windows 上的 numpy 的 Fortran 編譯器,即使 C 編譯器是 Visual Studio(VS 2005 及以上版本;VS 2003 不會起作用)。在 Windows 64 位系統上,Gfortran + Visual Studio 不起作用(但 gcc + gfortran 可以)。尚不清楚是否可以在 x64 上完全使用 gfortran 和 Visual Studio。

用於 Windows 二進位制檔案的 Arch 選項

現在可以透過命令列繞過自動檢測超級包的架構:

numpy-1.3.0-superpack-win32.exe /arch=nosse

將安裝一個可以在任何 x86 上執行的 numpy,即使執行計算機支援 SSE 設定。

不推薦使用的功能

直方圖

直方圖的語義已更改以修復與離群值處理相關的長期問題。主要變化涉及

  1. 包括最右邊的邊緣在內的箱邊界的定義,以及

  2. 對上限離群值的處理方式已更改,現在在最右邊的箱中被忽略而不是被計數。

先前的行為仍可透過new=False訪問,但已被棄用,並將在 1.4.0 中完全移除。

文件更改

新增了大量文件。使用者指南和參考資料可以從 sphinx 中構建。

新的 C API

Multiarray API

以下函式已新增到 multiarray C API 中:

  • PyArray_GetEndianness:獲取執行時的位元組順序

Ufunc API

以下函式已新增到 ufunc API 中:

  • PyUFunc_FromFuncAndDataAndSignature:宣告一個更常規的 ufunc(廣義 ufunc)。

新定義

透過 numpy/npy_cpu.h 現在提供了用於特定程式碼的 ARCH 的新公共 C 定義:

  • NPY_CPU_X86: x86 架構(32 位)
  • NPY_CPU_AMD64: amd64 架構(x86_64,非 Itanium)
  • NPY_CPU_PPC:32 位 ppc
  • NPY_CPU_PPC64: 64 位 ppc
  • NPY_CPU_SPARC: 32 位 sparc
  • NPY_CPU_SPARC64: 64 位 sparc
  • NPY_CPU_S390:S390
  • NPY_CPU_IA64: ia64
  • NPY_CPU_PARISC:PARISC

也新增了 CPU 位元組順序的新宏(有關詳細資訊,請參見下文的內部更改):

  • NPY_BYTE_ORDER:整數
  • NPY_LITTLE_ENDIAN/NPY_BIG_ENDIAN 定義

為那些沒有的平臺提供可移植的 glibc endian.h 宏。

可移植的 NAN、INFINITY 等...

npy_math.h 現在提供了幾個可移植的宏,用於獲取 NAN、INFINITY:

  • NPY_NAN: 等同於 GNU 擴充套件的 NAN
  • NPY_INFINITY: 等同於 C99 INFINITY
  • NPY_PZERO, NPY_NZERO:正零和負零

相應的單精度和擴充套件精度宏也可用。為了一致性,所有對 NAN 的引用或現場計算 NAN 的處理方式都已移除。

內部更改

numpy.core 數學配置重組

這樣可以更容易、更強大地移植到新平臺。特別是配置階段不需要在目標平臺上執行任何程式碼,這是邁向交叉編譯的第一步。

www.numpy.org/neps/nep-0003-math_config_clean.html

umath 重構

對 umath/ufunc 程式碼進行了大量清理(charris)。

改進了構建警告

Numpy 現在可以在不警告的情況下使用-W-Wall 構建

www.numpy.org/neps/nep-0002-warnfix.html

單獨的核心數學庫

核心數學函式(sin、cos 等...)已放入單獨的庫中;它作為相容性層,支援大多數 C99 數學函式(目前僅為實數)。該庫包括各種數學函式的特定於平臺的修復,使用這些版本比直接使用你的平臺函式更穩健。現有函式的 API 與 C99 數學函式的 API 完全相同;唯一的區別是 npyprefix(npy_cos 與 cos 相比)。

核心庫將在 1.4.0 中提供給任何擴充套件。

CPU 架構檢測

npy_cpu.h 定義了 numpy 特定的 CPU 定義,如 NPY_CPU_X86 等… 這些在 OS 和工具鏈之間是可移植的,並在標頭檔案解析時設定,以便它們可以安全地在跨編譯(值在構建 numpy 時未設定)或多架構二進位制檔案(如在 Max OS X 上的 fat 二進位制檔案)中使用。

npy_endian.h 定義了 numpy 特定的位元組順序定義,模仿了 glibc 的 endian.h。NPY_BYTE_ORDER 等同於 BYTE_ORDER,並且定義了 NPY_LITTLE_ENDIAN 或 NPY_BIG_ENDIAN 之一。至於 CPU 架構,這些是在標頭檔案被編譯器解析時設定的,並且因此可以用於跨編譯和多架構二進位制檔案。

亮點

Python 2.6 支援

Python 2.6 現在在所有先前支援的平臺上得到支援,包括 windows。

www.python.org/dev/peps/pep-0361/

泛化的 ufuncs

不僅需要迴圈遍歷標量函式,還需要迴圈遍歷向量(或陣列)函式,如scipy.org/scipy/numpy/wiki/GeneralLoopingFunctions中所解釋的。我們建議透過泛化通用函式(ufuncs)來實現這一概念,並提供一個 C 實現,為 numpy 程式碼庫增加了大約 500 行。在當前(專用)ufuncs 中,基本函式受限於逐元素操作,而泛化版本支援“子陣列”之間的操作。Perl 向量庫 PDL 提供了類似功能,並且它的術語在下文中被重複使用。

每個泛化的 ufunc 都有與之相關的資訊,說明輸入的“核心”維度是什麼,以及對應的輸出的維度(逐元素 ufuncs 具有零個核心維度)。所有引數的核心維度列表被稱為 ufunc 的“簽名”。例如,ufunc numpy.add 具有簽名“(),()->()”,定義了兩個標量輸入和一個標量輸出。

另一個例子是(參見 GeneralLoopingFunctions 頁面)具有“(i),(i)->()”簽名的函式 inner1d(a,b)。這將沿著每個輸入的最後一個軸應用內積,但保持其餘索引不變。例如,如果 a 的形狀為(3,5,N),b 的形狀為(5,N),則返回形狀為(3,5)的輸出。底層基本函式被呼叫了 3*5 次。在簽名中,我們為每個輸入指定一個核心維度“(i)”,為輸出指定零個核心維度“()”,因為它接受兩個 1 維陣列並返回一個標量。透過使用相同的名稱“i”,我們指定兩個對應的維度應該具有相同的大小(或其中一個大小為 1,並且將被廣播)。

超出核心維度的維度被稱為“迴圈”維度。在上面的示例中,這對應於(3,5)。

使用 numpy 的通常“廣播”規則,其中籤名確定每個輸入/輸出物件的維度如何分成核心和迴圈維度:

當一個輸入陣列的維度小於對應的核心維度數量時,會在其形狀之前新增1。核心維度將從所有輸入中移除,並廣播剩餘的維度,定義迴圈維度。輸出由迴圈維度和輸出核心維度組成。

實驗性的 Windows 64 位支援

Numpy 現在可以在 Windows 64 位上構建(僅 amd64,不包括 IA64),同時使用 MS 編譯器和 mingw-w64 編譯器:

這是非常實驗性的:不要用於生產環境。有關限制和如何自行構建的更多資訊,請參閱 INSTALL.txt 中的 Windows 64 位部分。

支援 Python 2.6

Python 2.6 現在在先前支援的所有平臺上都得到支援,包括 Windows。

www.python.org/dev/peps/pep-0361/

廣義 ufuncs

不僅需要迴圈處理標量函式,還需要迴圈處理向量(或陣列)函式,詳見scipy.org/scipy/numpy/wiki/GeneralLoopingFunctions。我們建議透過泛化通用函式(ufuncs)來實現這個概念,並提供一個 C 實現,將近 500 行新增到 numpy 程式碼庫中。在當前(專用)的 ufuncs 中,基本函式僅支援逐元素操作,而廣義版本支援“子陣列”間的操作。Perl 向量庫 PDL 提供了類似的功能,並在下面的內容中重複使用其術語。

每個廣義 ufunc 都有與之相關聯的資訊,宣告輸入的“核心”維度以及相應的輸出維度(逐元素 ufuncs 具有零個核心維度)。所有引數的核心維度列表稱為 ufunc 的“簽名”。例如,ufunc numpy.add 的簽名是“(),()->()”,定義了兩個標量輸入和一個標量輸出。

另一個例子是(參見 GeneralLoopingFunctions 頁面)具有簽名“(i),(i)->()”的函式 inner1d(a,b)。它沿著每個輸入的最後一個軸應用內積,但保持其餘索引不變。例如,當 a 的形狀為(3,5,N),b 的形狀為(5,N)時,將返回形狀為(3,5)的輸出。底層基本函式被呼叫 3*5 次。在簽名中,我們為每個輸入指定一個核心維度“(i)”,為輸出指定零個核心維度“()”,因為它採用了兩個 1-d 陣列並返回一個標量。透過使用相同的名稱“i”,我們指定了兩個相應的維度應具有相同的大小(或其中一個大小為 1,將被廣播)。

超出核心維度的維度稱為“迴圈”維度。在上面的例子中,這對應於(3,5)。

通常的 numpy “broadcasting” 規則適用,其中籤名確定每個輸入/輸出物件的維度如何分割為核心維度和迴圈維度:

當輸入陣列的維度小於對應的核心維度數量時,在其形狀前面加上 1。從所有輸入中移除核心維度,剩下的維度進行廣播;定義迴圈維度。輸出由迴圈維度加上輸出核心維度給出。

實驗性的 windows 64 位支援

現在可以在 windows 64 位(僅限 amd64,不是 IA64)上構建 Numpy,使用 MS 編譯器和 mingw-w64 編譯器:

這是高度實驗性的:不要用於生產用途。有關限制和如何自行構建的更多資訊,請參閱 INSTALL.txt,Windows 64 位部分。

新功能

格式問題

浮點格式現在由 numpy 處理,而不是由 C 執行時處理:這使得格式化與語言環境無關,fromstring 等方法更加穩健。特殊值(inf 和 nan)在不同平臺上也更一致(nan vs IND/NaN 等),與最近的 python 格式化工作(2.6 及更高版本)更一致。

max/min 中的 NaN 處理

最大值/最小值 ufuncs 現在可靠地傳播 nans。如果其中一個引數是 nan,則返回 nan。這影響 np.min/np.max,amin/amax 和陣列方法 max/min。已新增新的 fmax 和 fmin ufuncs 以處理不傳播 nans。

sign 中的 NaN 處理

ufunc sign 現在返回 nan 作為 anan 的符號。

新 ufuncs

  1. fmax - 對於整數型別和非 nan 浮點數,與最大值相同。如果一個引數是 nan,則返回非 nan 引數;如果兩個引數都是 nan,則返回 nan。

  2. fmin - 對於整數型別和非 nan 浮點數,與最小值相同。如果一個引數是 nan,則返回非 nan 引數;如果兩個引數都是 nan,則返回 nan。

  3. deg2rad - 將度數轉換為弧度,與 radians ufunc 相同。

  4. rad2deg - 將弧度轉換為度數,與 degrees ufunc 相同。

  5. log2 - 基數 2 的對數。

  6. exp2 - 基數 2 的指數。

  7. trunc - 將浮點數截斷為最接近零的整數。

  8. logaddexp - 將作為對數儲存的數字相加,並返回結果的對數。

  9. logaddexp2 - 將儲存為基數 2 的對數的數字相加,並返回結果的基數 2 對數。

Masked arrays

包括若干新功能和 bug 修復:

  • 結構化陣列現在應該被 MaskedArray 完全支援 (r6463, r6324, r6305, r6300, r6294…)
  • 小 bug 修復 (r6356, r6352, r6335, r6299, r6298)
  • iter 進行了改進 (r6326)
  • 使 baseclass、sharedmask 和 hardmask 對使用者可訪問(但只讀)
  • 文件更新

windows 上的 gfortran 支援

Gfortran 現在可以在 windows 上用作 numpy 的 Fortran 編譯器,即使 C 編譯器是 Visual Studio(VS 2005 及更高版本;VS 2003 不工作)。Gfortran + Visual Studio 不能在 64 位 windows 上工作(但 gcc + gfortran 可以)。目前尚不清楚是否可能在 x64 上使用 gfortran 和 Visual Studio。

Windows 二進位制檔案的架構選項

現在可以透過命令列繞過超級包的自動架構檢測進行安裝:

numpy-1.3.0-superpack-win32.exe /arch=nosse

安裝一個可以在任何 x86 架構上執行的 numpy,即使執行計算機支援 SSE 指令集。

格式問題

浮點數格式現在由 numpy 處理而不是 C 執行時:這使得格式與語言環境無關,對 fromstring 和相關方法更健壯。特殊值(inf 和 nan)在不同平臺上也更一致(nan vs IND/NaN 等),並與最近 Python 格式處理的工作更一致(在 2.6 及更高版本中)。

max/min 中的 NAN 處理

最大/最小的 ufuncs 現在可靠地傳播 nan。如果其中一個引數是 nan,則返回 nan。這影響 np.min/np.max,amin/amax 和陣列方法 max/min。新增的 ufuncs fmax 和 fmin 用於處理不傳播 nan 的情況。

NAN 在 sign 中的處理

ufunc sign 現在返回 nan 作為 nan 的符號。

新的 ufuncs

  1. fmax - 對於整數型別和非 nan 浮點數,與最大值相同。如果一個引數是 nan,則返回非 nan 引數,並且如果兩個引數都是 nan,則返回 nan。

  2. fmin - 對於整數型別和非 nan 浮點數,與最小值相同。如果一個引數是 nan,則返回非 nan 引數,並且如果兩個引數都是 nan,則返回 nan。

  3. deg2rad - 將角度轉換為弧度,與 radians ufunc 相同。

  4. rad2deg - 將弧度轉換為角度,與 degrees ufunc 相同。

  5. log2 - 以 2 為底的對數。

  6. exp2 - 以 2 為底的指數。

  7. trunc - 將浮點數截斷為最接近零的整數。

  8. logaddexp - 將以對數形式儲存的數相加並返回結果的對數。

  9. logaddexp2 - 將以 2 為底形式儲存的數相加並返回結果的以 2 為底的對數。

掩碼陣列

幾個新功能和錯誤修復,其中包括

  • 結構化陣列現在應該得到 MaskedArray 的全面支援(r6463,r6324,r6305,r6300,r6294 等)
  • 小錯誤修復(r6356,r6352,r6335,r6299,r6298)
  • iter 的改進(r6326)
  • 將 baseclass、sharedmask 和 hardmask 對使用者開放(但是隻讀)
  • 文件更新

Windows 上的 gfortran 支援

Gfortran 現在可以作為 numpy 在 Windows 上的 Fortran 編譯器使用,即使 C 編譯器是 Visual Studio(VS 2005 及以上版本;VS 2003 不可用)。在 Windows 64 位系統上,Gfortran + Visual studio 不可用(但 gcc + Gfortran 可用)。目前不清楚是否可以在 x64 上完全使用 gfortran 和 Visual Studio。

Windows 二進位制檔案的架構選項

現在可以透過命令列繞過超級包的自動架構檢測進行安裝:

numpy-1.3.0-superpack-win32.exe /arch=nosse

安裝一個可以在任何 x86 架構上執行的 numpy,即使執行計算機支援 SSE 指令集。

棄用的功能

直方圖

直方圖的語義已經修改,以解決長期以來與異常值處理相關的問題。主要改變涉及

  1. 箱邊界的定義,現在包括最右側的邊界,以及

  2. 現在忽略上限的異常值,而不是在最右側的箱中計數。

new=False 的方式仍然可以訪問以前的行為,但這已被棄用,並將在 1.4.0 版本中完全刪除。

Histogram

histogram 的語義已被修改以解決與處理異常值有關的長期問題。主要變化包括

  1. 定義分 bin 的方式已發生變化,現在最右側的邊緣也包含其中,並且

  2. 處理上界異常值的方式已被修改,現在將其忽略而不是計入最右側的 bin 中。

new=False 的方式仍然可以訪問以前的行為,但這已被棄用,並將在 1.4.0 版本中完全刪除。

文件更改

新增了很多文件。使用者指南和參考可以從 sphinx 構建。

新增的 C API

Multiarray API

新增了一些 multiarray C API 中的函式:

  • PyArray_GetEndianness: 獲取執行時位元組順序

Ufunc API

ufunc API 中新增的函式包括:

  • PyUFunc_FromFuncAndDataAndSignature: 宣告更通用的 ufunc(通用 ufunc)。

新新增的定義

可以透過 numpy/npy_cpu.h 在特定於 ARCH 的程式碼中使用新的公共 C 定義:

  • NPY_CPU_X86: x86 架構(32 位)
  • NPY_CPU_AMD64: amd64 架構(x86_64, 不是 Itanium)
  • NPY_CPU_PPC: 32 位 ppc
  • NPY_CPU_PPC64: 64 位 ppc
  • NPY_CPU_SPARC: 32 位 sparc
  • NPY_CPU_SPARC64: 64 位 sparc
  • NPY_CPU_S390: S390
  • NPY_CPU_IA64: ia64
  • NPY_CPU_PARISC: PARISC

也新增了一些關於 CPU 位元組順序的宏(詳見下面的內部更改):

  • NPY_BYTE_ORDER: 整型
  • NPY_LITTLE_ENDIAN/NPY_BIG_ENDIAN 定義

對於沒有 glibc endian.h 宏的平臺,這些定義提供了可移植的替代方案。

可移植的 NAN、INFINITY 等……

npy_math.h 現在提供了幾個可移植的宏,用於獲取 NAN、INFINITY:

  • NPY_NAN: 等同於 NAN,這是一個 GNU 擴充套件
  • NPY_INFINITY: 等同於 C99 INFINITY
  • NPY_PZERO, NPY_NZERO:分別為正零和負零

相應的單精度和擴充套件精度的宏也可用。為了保持一致,所有對 NAN 的引用或即時計算 NAN 的自定義方法都已移除。

Multiarray API

新增了一些 multiarray C API 中的函式:

  • PyArray_GetEndianness: 獲取執行時位元組順序

Ufunc API

ufunc API 中新增的函式包括:

  • PyUFunc_FromFuncAndDataAndSignature: 宣告更通用的 ufunc(通用 ufunc)。

新增的定義

可以透過 numpy/npy_cpu.h 在特定於 ARCH 的程式碼中使用新的公共 C 定義:

  • NPY_CPU_X86: x86 架構(32 位)
  • NPY_CPU_AMD64: amd64 架構(x86_64,不是 Itanium)
  • NPY_CPU_PPC: 32 位 ppc
  • NPY_CPU_PPC64: 64 位 ppc
  • NPY_CPU_SPARC: 32 位 sparc
  • NPY_CPU_SPARC64: 64 位 sparc
  • NPY_CPU_S390: S390
  • NPY_CPU_IA64: ia64
  • NPY_CPU_PARISC: PARISC

也新增了一些關於 CPU 位元組順序的宏(詳見下面的內部更改):

  • NPY_BYTE_ORDER: 整型
  • NPY_LITTLE_ENDIAN/NPY_BIG_ENDIAN 定義

對於沒有 glibc endian.h 宏的平臺,這些定義提供了可移植的替代方案。

可移植的 NAN、INFINITY 等……

npy_math.h 現在提供了幾個可移植的宏,用於獲取 NAN、INFINITY:

  • NPY_NAN: 等同於 NAN,這是 GNU 的擴充套件
  • NPY_INFINITY: 等同於 C99 的 INFINITY
  • NPY_PZERO, NPY_NZERO: 正零和負零

相應的單精度和擴充套件精度宏也可用。為了保持一致性,所有對 NAN 的引用,或者即興計算 NAN 的處理方式都已經移除。

內部更改

numpy.core 數學配置改進

這應該使得向新平臺的移植更加容易和穩健。特別是,配置階段不需要在目標平臺上執行任何程式碼,這是邁向交叉編譯的第一步。

www.numpy.org/neps/nep-0003-math_config_clean.html

umath 重構

對 umath/ufunc 程式碼進行了大量清理(charris)。

改進構建警告

Numpy 現在可以在沒有警告的情況下使用-W -Wall 構建

www.numpy.org/neps/nep-0002-warnfix.html

單獨的核心數學庫

核心數學函式(sin, cos 等...針對基本的 C 型別)已經放入單獨的庫中;它作為一個相容性層,支援大部分 C99 的數學函式(目前只支援實數)。該庫包括對各種數學函式的特定於平臺的修復,因此使用這些版本應該比直接使用平臺函式更可靠。現有函式的 API 與 C99 數學函式 API 完全相同;唯一的區別就是 npyprefix(npy_cos vs cos)。

核心庫將在 1.4.0 中向任何擴充套件提供。

CPU 體系結構檢測

npy_cpu.h 定義了 numpy 特定的 CPU 定義,如 NPY_CPU_X86 等...這些在 OS 和工具鏈中是可移植的,並且在解析標頭檔案時進行設定,因此即使在交叉編譯的情況下(當構建 numpy 時未設定這些值),或者在多體系結構二進位制檔案(例如在 Max OS X 上的 fat 二進位制檔案)中也可以安全地使用。

npy_endian.h 定義了 numpy 特定的位元組順序定義,模仿了 glibc 的 endian.h。NPY_BYTE_ORDER 等同於 BYTE_ORDER,並且定義了 NPY_LITTLE_ENDIAN 或 NPY_BIG_ENDIAN 中的一個。與 CPU 體系結構一樣,這些值在編譯器解析標頭檔案時設定,並因此可以用於交叉編譯和多體系結構二進位制檔案。

numpy.core 數學配置改進

這應該使得向新平臺的移植更加容易和穩健。特別是,配置階段不需要在目標平臺上執行任何程式碼,這是邁向交叉編譯的第一步。

www.numpy.org/neps/nep-0003-math_config_clean.html

umath 重構

對 umath/ufunc 程式碼進行了大量清理(charris)。

改進構建警告

Numpy 現在可以在沒有警告的情況下使用-W -Wall 構建

www.numpy.org/neps/nep-0002-warnfix.html

單獨的核心數學庫

核心數學函式(對於基本 C 型別的 sin、cos 等)已被放入單獨的庫中,該庫作為相容層,支援大多數 C99 數學函式(目前僅支援實數)。該庫包括針對各種數學函式的平臺特定修復,因此使用這些版本應比直接使用平臺函式更可靠。現有函式的 API 與 C99 數學函式的 API 完全相同,唯一的區別是字首新增了 npy(npy_cos vs cos)。

核心庫將在 1.4.0 版本中對任何擴充套件程式開放。

CPU 架構檢測

npy_cpu.h 定義了特定於 numpy 的 CPU 定義,如 NPY_CPU_X86 等。這些定義在作業系統和工具鏈中是可移植的,並在解析標頭檔案時進行設定,因此即使在交叉編譯的情況下(在構建 numpy 時未設定值)或多架構二進位制檔案的情況下(例如 Mac OS X 上的 fat binaries),也可以安全地使用它們。

npy_endian.h 定義了特定於 numpy 的位元組順序定義,基於 glibc endian.h 的模型。NPY_BYTE_ORDER 等同於 BYTE_ORDER,並且定義了 NPY_LITTLE_ENDIAN 或 NPY_BIG_ENDIAN 其中之一。至於 CPU 架構,則在編譯器解析標頭檔案時進行設定,並且可以用於交叉編譯和多架構二進位制檔案。

相關文章