在NumPy中,ndarray(n维数组)遵循一套运算规则,用于执行元素级操作、广播、聚合等数组操作。这些规则确保在执行元素级操作、广播和其他与数组相关的计算时具有一致且直观的行为。以下是NumPy中ndarray的关键运算规则:
- 元素级操作:
大多数ndarray之间的算术和逻辑操作都是元素级别执行的,即使用指定操作组合数组的相应元素。例如:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = a + b # 元素级加法:[1+4, 2+5, 3+6] = [5, 7, 9]
- 广播:
广播允许在不同形状的数组之间进行二元操作,只要它们的维度兼容。较小的数组将被”广播”以匹配较大数组的形状。例如:
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([10, 20, 30])
result = a + b # 将b广播到a的行上进行操作
- 比较和布尔操作:
比较操作(<
、>
、<=
、>=
、==
、!=
)返回布尔数组,可用于索引或元素级操作。
arr = np.array([1, 2, 3, 4, 5])
condition = arr > 2
filtered = arr[condition] # 选择大于2的元素
- 聚合函数:
聚合函数如np.sum()
、np.mean()
、np.max()
等在数组的所有元素上执行操作。您可以指定一个轴进行沿着特定轴的聚合。
arr = np.array([[1, 2, 3], [4, 5, 6]])
sum_all = np.sum(arr) # 所有元素之和
sum_axis0 = np.sum(arr, axis=0) # 沿轴0求和(按列求和)
- 一元函数:
NumPy 提供了许多一元函数(ufuncs),对ndarray进行逐元素操作,如np.square()
、np.sqrt()
、np.exp()
等。
arr = np.array([1, 2, 3])
squared = np.square(arr) # 元素级平方
- 重塑:
您可以使用reshape()
方法或诸如np.ravel()
、np.flatten()
等函数来重塑数组。
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped = arr.reshape(2, 3) # 重塑为2x3数组
-
通用函数(ufuncs):
通用函数是高性能的逐元素函数,包括一元函数(例如np.square()
)和二元函数(例如np.add()
)。 -
类型转换:
在操作期间,NumPy 自动执行类型转换以确保一致性。结果的数据类型由输入数据类型决定。 -
掩码操作:
您可以使用布尔数组在ndarray上进行索引或过滤,根据条件选择元素。 -
索引和切片:
与Python列表类似,您可以使用索引和切片访问和操作ndarray的元素。 -
高级索引:
您可以使用索引数组选择特定元素或行。 -
缩减操作:
缩减函数如np.sum()
、np.mean()
等通过在一个或多个轴上执行操作来减少数组的维度。
理解这些运算规则对于有效地使用NumPy中的ndarray并高效执行各种数学、逻辑和数据操作至关重要。