當前位置: 妍妍網 > 碼農

厲害了,numpy!!!

2024-04-22碼農

幾乎所有使用Python處理分析數據的人都用過Pandas,因為實在太方便了,就像Excel一樣,但你知道Pandas是基於Numpy開發出來的嗎?

Pandas和Numpy的關系類似於國產安卓系統和原生安卓,Numpy提供底層數據結構和演算法,搭配數據面板的分析模式,締造了Pandas。

某種意義上來說,Numpy是Python數據科學領域金字塔尖的庫。

有人這樣問過。 這並不讓人意外,雖然Numpy沒有Pandas知名度高,但Numpy的效能之強大、套用之廣會讓很多人咋舌,甚至Numpy的論文登上了Nature雜誌。

閱讀和下載地址:https://www.nature.com/articles/s41586-020-2649-2

不清楚底細的人可能會問,到底什麽是Numpy?

Numpy是專門用於多維陣列和矩陣計算的Python庫,Numpy的強大不在於有多少函式方法,而在於其多維陣列和矩陣的計算能力和執行效率。

眾所周知的商業軟體matlab,也是基於多維陣列和矩陣計算。

多維陣列和矩陣計算最主要的特點是快,非常快。

知道線性代數吧,為了提高效能,有專門的線性代數庫(如BLAS、LAPACK、Intel MKL等)對底層的矩陣運算進行了高度最佳化。

另外,CPU、GPU這些硬體對矩陣運算有很好的支持。

比如說,GPU具有大量的並列處理核心,非常適合執行大規模的矩陣運算。透過使用CUDA或OpenCL等技術,可以充分發揮GPU的平行計算能力。

在Numpy建立和使用多維陣列很簡單,使用array方法即可。

除了多維陣列和矩陣計算,從Numpy本身來說,它以下4大特點確保了它的重要地位:

1、可以和Pandas等多種庫進行互動

2、擁有各種科學計算API,任你呼叫

3、Numpy基於C語言開發,速度和C一樣快

4、Numpy在Python中使用,操作和Python一樣簡潔

接下來,我們看看有哪些Python庫的底層依賴庫是numpy。

依賴代表這些庫需要numpy支持才能執行,某種意義上來說,某個庫作為依賴庫越多代表它越重要。

以numpy作為依賴的部份python庫:

  1. Pandas :最出名的數據處理和分析庫,使用基於NumPy 的二維陣列來分析數據。

  1. SciPy :類似於Matlab的數學和工程計算庫,SciPy 庫建立在 NumPy 之上,使用多維陣列來計算。

  2. Matplotlib :Python中功能最齊全的視覺化庫,也是很多其他視覺化庫的依賴,它依賴 NumPy 進行數學運算以生成圖形。

  3. Scikit-learn :擁有各類演算法的機器學習庫,使用 NumPy 進行數據的快速處理和演算法實作。

  4. StatsModels :專門用於統計分析的演算法庫,依賴 NumPy 進行數值計算。

  5. TensorFlow PyTorch :最最出名的兩個深度學習框架,各種大模型都是靠它們跑出來的,但是它們在底層使用 NumPy 進行張量操作。

  1. OpenCV :家喻戶曉的電腦視覺,使用 NumPy 陣列進行影像處理。

  2. NetworkX :圖形網路分析庫,用於復雜網路建立、操作和使用 ,使用NumPy 進行網路分析。

可以看到,很內送流量備援容錯機制流的數據科學、機器學習、深度學習庫都是靠numpy依賴,基於多維陣列來進行計算,可見numpy有多麽的重要,說它是數據科學的頂級庫也不為過。

以下是一些numpy的基礎函式和方法介紹:

  1. np.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0) :

  • 建立一個 NumPy 陣列。

  • np.zeros(shape, dtype=float, order='C') :

  • 返回一個給定形狀和數據型別的陣列,其中所有元素都為 0。

  • np.ones(shape, dtype=None, order='C') :

  • 返回一個給定形狀和數據型別的陣列,其中所有元素都為 1。

  • np.empty(shape, dtype=float, order='C') :

  • 返回一個未初始化的陣列,其元素值是隨機的。

  • np.arange(start, stop=None, step=1, dtype=None) :

  • 返回一個與 Python 的 range 類似的陣列,包含從 start 開始到 stop 結束(不包括 stop )的值,步長為 step

  • np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) :

  • 返回一個陣列,其中包含 num 個從 start stop 的等間隔的點。

  • np.reshape(a, newshape, order='C') :

  • 將陣列 a 重塑為 newshape 指定的形狀。

  • np.transpose(a, axes=None) :

  • 轉置陣列,可選地按照 axes 指定的軸順序。

  • np.dot(a, b, out=None) :

  • 矩陣乘法,計算兩個陣列的點積。

  • np.vstack(tup) :

  • 垂直堆疊陣列,等價於 np.concatenate(tup, axis=0)

  • 更多請在公眾號後台回復:numpy,獲取pdf

    加入知識星球 【我們談論數據科學】

    600+ 小夥伴一起學習!