廣播與通用函數(shù)
廣播是 NumPy 的核心概念,它允許將標(biāo)量或數(shù)組與具有不同形狀的其他數(shù)組執(zhí)行逐元素操作。通用函數(shù) (ufunc) 是預(yù)定義的函數(shù),應(yīng)用于數(shù)組的每個(gè)元素。通過(guò)結(jié)合廣播和 ufunc,可以實(shí)現(xiàn)高效且簡(jiǎn)潔的數(shù)據(jù)操作。
通用函數(shù)范例:
矢量化乘法:np.multiply(A, B)
元素比較:np.greater(A, B)
數(shù)學(xué)運(yùn)算:np.sin(x)
高級(jí)索引與切片
高級(jí)索引和切片提供了超出標(biāo)準(zhǔn)索引的靈活數(shù)據(jù)訪問(wèn)方式。布爾索引選擇滿足特定條件的元素,而花式索引和高級(jí)切片允許使用數(shù)組或列表索引多個(gè)軸上的元素。
高級(jí)索引范例:
布爾索引:A[A > 5]
花式索引:A[np.array([0, 2, 4])]
高級(jí)切片:A[::2, 1::2]
數(shù)組聚合與歸約
聚合函數(shù)用于對(duì)數(shù)組中數(shù)據(jù)進(jìn)行分組或匯總。歸約函數(shù)將數(shù)組中的元素減少為單個(gè)標(biāo)量值。常見(jiàn)的聚合函數(shù)包括:
求和:np.sum()
平均值:np.mean()
最大值:np.max()
最小值:np.min()
排序與唯一值
排序算法對(duì)數(shù)組的元素進(jìn)行排序,而唯一值函數(shù)返回?cái)?shù)組中唯一元素的集合。這些功能對(duì)于數(shù)據(jù)分析和數(shù)據(jù)清理非常有用。
排序范例:
排序數(shù)組:np.sort(x)
沿特定軸排序:np.sort(A, axis=1)
唯一值范例:
找出唯一值:np.unique(A)
計(jì)數(shù)唯一值:np.unique(A, return_counts=True)
廣播、高級(jí)索引和聚合的結(jié)合
結(jié)合廣播、高級(jí)索引和聚合可以實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)操作。例如,可以對(duì)數(shù)組中的特定行或列求和,或?qū)M足特定條件的元素進(jìn)行計(jì)數(shù)。
范例:
對(duì)每個(gè)列求和:np.sum(A, axis=0)
對(duì)布爾索引元素求平均值:np.mean(A[A > 5])
性能優(yōu)化
通過(guò)利用 NumPy 的矢量化、廣播和高效的底層實(shí)現(xiàn),可以優(yōu)化數(shù)據(jù)操作的性能。其他性能優(yōu)化技巧包括:
避免創(chuàng)建不必要的副本
使用數(shù)組表達(dá)式而不是循環(huán)
使用 NumPy 的優(yōu)化的 ufunc
其他高級(jí)特性
NumPy 還提供了其他高級(jí)特性,例如:
數(shù)組廣播
花式索引
線性代數(shù)操作
隨機(jī)數(shù)生成
用例
NumPy 的進(jìn)階技術(shù)在各種應(yīng)用中都有用,包括:
數(shù)據(jù)分析與挖掘
科學(xué)計(jì)算
圖像處理
機(jī)器學(xué)習(xí)