Numpy数组操作详解:创建、属性与索引

3 下载量 31 浏览量 更新于2024-08-31 收藏 92KB PDF 举报
"Numpy数组操作" 在Python科学计算领域,Numpy库是不可或缺的一部分,它提供了高效的多维数组对象,以及一系列用于处理这些数组的方法。Numpy数组,也称为ndarray,是Numpy的核心数据结构,具有许多特性使其在处理大量数据时效率极高。以下是对Numpy数组操作的详细说明: **Numpy数组的创建** 1. **numpy.array方法**:这是最基础的创建数组的方式,可以接受列表、元组或其他序列作为输入,生成数组。例如: ```python import numpy as np array_1 = np.array([1, 4, 2, 5, 3]) ``` 如果输入的数据类型不一致,Numpy会自动进行类型提升。 2. **numpy.zeros方法**:生成指定形状的全零数组。 ```python array_zeros = np.zeros((3, 4)) # 创建一个3x4的全零二维数组 ``` 3. **numpy.ones方法**:生成指定形状的全一数组。 ```python array_ones = np.ones((2, 3)) # 创建一个2x3的全一二维数组 ``` 4. **numpy.full方法**:生成指定形状的数组,所有元素都填充给定的值。 ```python array_full = np.full((2, 3), 7) # 创建一个2x3的二维数组,所有元素为7 ``` 5. **numpy.arange方法**:创建一个等差数列数组。 ```python array_range = np.arange(10) # 创建一个从0到9的一维数组 ``` 6. **numpy.linspace方法**:在指定范围内生成等间距的数组。 ```python array_linspace = np.linspace(0, 1, 5) # 创建一个从0到1的等差数组,包含5个元素 ``` 7. **numpy.random.random方法**:生成指定形状的随机浮点数数组,取值范围在0到1之间。 ```python array_random = np.random.random((3, 2)) # 创建一个3x2的随机浮点数二维数组 ``` 8. **numpy.random.randint方法**:生成指定范围内的整数数组。 ```python array_randint = np.random.randint(1, 10, (2, 3)) # 创建一个2x3的二维数组,元素为1到9的整数 ``` 9. **numpy.random.normal方法**:生成符合正态分布的随机数组。 ```python array_normal = np.random.normal(0, 1, (3, 4)) # 创建一个3x4的二维数组,元素为均值0,标准差1的正态分布随机数 ``` 10. **numpy.eye方法**:生成单位矩阵。 ```python identity_matrix = np.eye(3) # 创建一个3x3的单位矩阵 ``` 11. **numpy.empty方法**:创建指定形状的未初始化数组,元素值不确定。 ```python array_empty = np.empty((2, 4)) # 创建一个2x4的未初始化二维数组 ``` **Numpy数组的属性** 1. **维度**(ndim):数组的轴的数量,即数组的维数。 2. **形状**(shape):一个表示数组各维度长度的元组。 3. **大小**(size):数组元素的总数量。 4. **数据类型**(dtype):数组元素的数据类型,如int, float, bool等。 5. **元素的字节大小**(itemsize):数组中单个元素占用的字节数。 6. **字节大小**(nbytes):整个数组占用的内存字节数,等于形状乘以元素的字节大小。 **Numpy数组的索引和切片** 1. **一维数组索引**:与Python列表类似,通过索引值访问数组元素。 2. **多维数组索引**:使用多个索引值访问多维数组中的元素。 3. **切片**:使用切片操作符`:`进行数组部分的选取,例如`array[1:3]`选取一维数组的第二到第三个元素,`array[1:3, 2:4]`选取二维数组的部分区域。 **数组的变形和拼接** 1. **reshape方法**:改变数组的形状,但不改变数据。 2. **切片时使用np.newaxis关键字**:增加数组的维度,如`array[:, np.newaxis]`将一维数组转换为列向量。 3. **数组的拼接** - `numpy.concatenate()`:沿指定轴合并多个数组。 - `numpy.vstack()`:沿着垂直方向(轴0)合并数组。 - `numpy.hstack()`:沿着水平方向(轴1)合并数组。 4. **数组的分裂** - `numpy.split()`:将数组沿指定轴分成多个子数组。 - `numpy.vsplit()`:沿垂直方向分割数组。 - `numpy.hsplit()`:沿水平方向分割数组。 Numpy提供的这些操作使得在处理多维数据时更加便捷高效,无论是创建、索引、切片还是组合数组,都有相应的工具来支持。掌握这些操作,能极大地提高数据处理的效率和代码的可读性。