幾乎所有使用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庫:
Pandas :最出名的數據處理和分析庫,使用基於NumPy 的二維陣列來分析數據。
SciPy :類似於Matlab的數學和工程計算庫,SciPy 庫建立在 NumPy 之上,使用多維陣列來計算。
Matplotlib :Python中功能最齊全的視覺化庫,也是很多其他視覺化庫的依賴,它依賴 NumPy 進行數學運算以生成圖形。
Scikit-learn :擁有各類演算法的機器學習庫,使用 NumPy 進行數據的快速處理和演算法實作。
StatsModels :專門用於統計分析的演算法庫,依賴 NumPy 進行數值計算。
TensorFlow 和 PyTorch :最最出名的兩個深度學習框架,各種大模型都是靠它們跑出來的,但是它們在底層使用 NumPy 進行張量操作。
OpenCV :家喻戶曉的電腦視覺,使用 NumPy 陣列進行影像處理。
NetworkX :圖形網路分析庫,用於復雜網路建立、操作和使用 ,使用NumPy 進行網路分析。
可以看到,很內送流量備援容錯機制流的數據科學、機器學習、深度學習庫都是靠numpy依賴,基於多維陣列來進行計算,可見numpy有多麽的重要,說它是數據科學的頂級庫也不為過。
以下是一些numpy的基礎函式和方法介紹:
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+ 小夥伴一起學習!