1. 程式人生 > >NumPy學習筆記:4、高級運算

NumPy學習筆記:4、高級運算

scipy file matrix 系統 from degree span ctu src

一、多項式

舉個例子,技術分享

>>> p = np.poly1d([3, 2, -1])
>>> p(0)
-1
>>> p.roots
array([-1.        ,  0.33333333])
>>> p.order
2

1、更多與多項式相關

同樣以 技術分享 為例:

>>> p = np.polynomial.Polynomial([-1, 2, 3]) # coefs in different order!
>>> p(0)
-1.0
>>> p.roots()
array([
-1. , 0.33333333]) >>> p.degree() # In general polynomials do not always expose ‘order‘ 2

在切比雪夫基礎上使用多項式的例子:

>>> x = np.linspace(-1, 1, 2000)
>>> y = np.cos(x) + 0.3*np.random.rand(2000)
>>> p = np.polynomial.Chebyshev.fit(x, y, 90)

>>> t = np.linspace(-1, 1, 200)
>>> plt.plot(x, y, r.) [<matplotlib.lines.Line2D object at ...>] >>> plt.plot(t, p(t), k-, lw=3) [<matplotlib.lines.Line2D object at ...>]

技術分享

切比雪夫多項式在插值時十分有用。

二、加載數據文件

1、文本文件(.txt)

>>> data = np.loadtxt(data/populations.txt)  # 註意路徑要使用‘/‘
>>> np.savetxt(
pop2.txt, data) >>> data2 = np.loadtxt(pop2.txt)

註意:如果你的文本文件比較復雜,你可以試一下:

(1) np.genfromtxt

(2) 使用Python的 I/O函數 和 例如 正則表達式用來解析

tips:IPython中的幾個常用的文件系統的文件及文件夾命令:

In [1]: pwd      # show current directory
/home/user/stuff/2011-numpy-tutorial
In [2]: cd ex
/home/user/stuff/2011-numpy-tutorial/ex
In [3]: ls
populations.txt  species.txt

2、圖像文件

(1)使用matplotlib庫:

>>> img = plt.imread(C:/Users/Steacy/Downloads/me.jpg)
>>> img.shape, img.dtype
((680, 654, 3), dtype(uint8))
>>> plt.imshow(img)
<matplotlib.image.AxesImage object at 0x000001B7E219C390>
>>> plt.savefig(plot.png)
>>> plt.imsave(red_plot, img[:,:,0], cmap=plt.cm.gray)
>>> plt.show()

>>> plt.imshow(plt.imread(C:/Users/Steacy/red_plot))
<matplotlib.image.AxesImage object at 0x000001B7E293C390>
>>> plt.show()

(2)使用其他庫

>>> from scipy.misc import imsave
>>> imsave(tiny_me.png,img[::6,::6])
>>> plt.imshow(plt.imread(C:/Users/Steacy/tiny_me.png), interpolation=nearest)
<matplotlib.image.AxesImage object at 0x000001B7E5034C18>
>>> plt.show()

3、Numpy二進制文件 - 高效 I/O 操作

>>> data = np.ones((3, 3))
>>> np.save(pop.npy, data)
>>> data3 = np.load(pop.npy)

4、其他常見的文件類型

(1)HDF5:h5py, PyTables

(2)NetCDF:scipy.io.netcdf_file, netcdf4-python, ...

(3)Matlab:scipy.io.loadmat, scipy.io.savemat

(4)MatrixMarket:scipy.io.mmread, scipy.io.mmwrite

(5)IDL:scipy.io.readsav

NumPy學習筆記:4、高級運算