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