### NumPy 数组操作概述
NumPy 是 Python 中用于处理数值数据的强大库,其核心对象是同质多维数组 `ndarray`。该库支持大量的维度数组与矩阵运算,以及针对这些运算的专用函数。
#### 创建 NumPy 数组
通过 `numpy.array()` 函数可以轻松地将 Python 列表或其他序列类型的对象转换成 NumPy 数组[^2]:
```python
import numpy as np
# 从列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)
# 从嵌套列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", arr2)
```
#### 基本数学运算
对于 NumPy 数组而言,基本算术运算是按元素逐个进行的,并且既可通过操作符也可调用相应的方法来实现[^1]:
```python
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
addition_result = a + b # 加法
subtraction_result = a - b # 减法
multiplication_result = a * b # 乘法
division_result = a / b # 除法
print(addition_result) # 输出: [5 7 9]
print(subtraction_result) # 输出: [-3 -3 -3]
print(multiplication_result) # 输出: [ 4 10 18]
print(division_result) # 输出: [0.25 0.4 0.5 ]
```
#### 广播机制
当两个形状不同的数组相加时,较小的数组会沿着较大的那个方向扩展直到两者匹配;这一过程称为广播[^3]:
```python
c = np.ones((3, 3)) # 形状为 (3, 3) 的全 '1' 矩阵
d = np.arange(3) # 形状为 (3,) 的向量 [0, 1, 2]
broadcasted_sum = c + d
print(broadcasted_sum)
"""
输出:
[[1. 2. 3.]
[1. 2. 3.]
[1. 2. 3.]]
"""
```
#### 数组属性变换
除了简单的算术运算外,还可以改变现有数组的形式而不影响原始数据,比如转置、重塑等:
```python
matrix = np.array([[1, 2], [3, 4]])
transposed_matrix = matrix.T # 转置矩阵
reshaped_array = matrix.reshape(-1) # 将矩阵展平为一维向量
print(transposed_matrix) # 输出 [[1 3][2 4]]
print(reshaped_array) # 输出 [1 2 3 4]
```
#### 组合与分割数组
多个数组之间可以通过水平堆叠 (`hstack`) 或垂直堆叠 (`vstack`) 来组合在一起;相反地,也可以利用切片语法对单个大数组做分隔处理:
```python
horizontal_stack = np.hstack((np.zeros((2, 2)), np.ones((2, 2))))
vertical_split_parts = np.vsplit(np.eye(4), 2)
print(horizontal_stack)
"""
输出:
[[0. 0. 1. 1.]
[0. 0. 1. 1.]]
"""
for part in vertical_split_parts:
print(part)
"""
输出:
[[1. 0. 0. 0.]
[0. 1. 0. 0.]]
[[0. 0. 1. 0.]
[0. 0. 0. 1.]]
"""
```