NumPy 1.5.0 發行說明#

重點#

Python 3 相容性#

這是第一個與 Python 3 相容的 NumPy 版本。Python 3 和 Python 2 的支援是從單一程式碼庫完成的。有關變更的詳細說明,請參閱 https://web.archive.org/web/20100814160313/http://projects.scipy.org/numpy/browser/trunk/doc/Py3K.txt

請注意,NumPy 測試框架依賴於 nose,但 nose 尚未發布與 Python 3 相容的版本。不過,可以在 https://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)

ndarray 的點積方法#

ndarray 現在也將點積作為方法,這允許將矩陣乘積鏈寫成

>>> 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.polynomial#

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

  • 已將 degree 方法新增至 Polynomial 類別。

  • 已將 trimdeg 方法新增至 Polynomial 類別。它的運作方式類似於 truncate,不同之處在於,參數是結果的所需次數,而不是係數的數量。

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

  • 權重可以用於 polyfit 和 Polynomial.fit

  • 已將 linspace 方法新增至 Polynomial 類別,以簡化繪圖。

  • 新增了 polymulx 函數。

polynomial.chebyshev#

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

  • 已將 degree 方法新增至 Chebyshev 類別。

  • 已將 trimdeg 方法新增至 Chebyshev 類別。它的運作方式類似於 truncate,不同之處在於,參數是結果的所需次數,而不是係數的數量。

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

  • 權重可以用於 chebfit 和 Chebyshev.fit

  • 已將 linspace 方法新增至 Chebyshev 類別,以簡化繪圖。

  • 新增了 chebmulx 函數。

  • 新增了第一類和第二類 Chebyshev 點的函數。

histogram#

經過兩年的過渡期,histogram 函數的舊行為已逐步淘汰,並且已移除 “new” 關鍵字。

correlate#

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