Python Numpy 数组初始化与操作详解

0 下载量 146 浏览量 更新于2024-09-04 收藏 60KB PDF 举报
"Python Numpy 数组的初始化和基本操作" 在Python编程中,NumPy库是处理数值计算和科学计算的核心工具。它提供了一个高效的数据结构——ndarray(n-dimensional array),用于存储和操作大型多维数组。NumPy数组不仅在性能上优于Python内置的列表,还提供了丰富的数学和统计功能。 一、基础概念与属性 1. **ndarray**: NumPy中的主要数据结构,可以理解为多维数组。它包含以下关键属性: - `ndarray.ndim`: 表示数组的维度数,例如一个矩阵是二维的,因此`ndim`为2。 - `ndarray.shape`: 返回一个元组,表示数组在各维度上的大小。例如,(3, 5)表示3行5列。 - `ndarray.size`: 数组中所有元素的总数,等于各维度大小的乘积。 - `ndarray.dtype`: 描述数组中元素的数据类型,如`numpy.int32`、`numpy.float64`等。 - `ndarray.itemsize`: 每个元素在内存中占用的字节数。 2. **示例**: ```python import numpy as np a = np.arange(15).reshape(3,5) print(a.shape) # (3,5) print(a.ndim) # 2 print(a.dtype.name) # 'int64' print(a.itemsize) # 8 print(a.size) # 15 ``` 二、创建数组 1. **从列表或元组创建**: 使用`numpy.array()`函数将Python的列表或元组转换为NumPy数组。 ```python a = np.array([2,3,4]) # 单维数组 b = np.array([1.2,3.5,5.1]) # 单维浮点数数组 c = np.array([(1.5,2,3),(4,5,6)]) # 多维数组 ``` 2. **指定数据类型**: 在创建数组时可以指定数据类型,例如: ```python d = np.array([[1,2],[3,4]], dtype=complex) # 复数数组 ``` 三、数组的基本操作 1. **索引与切片**: NumPy数组的索引与Python列表类似,支持单索引、切片以及多维索引。 ```python a = np.array([[1,2,3],[4,5,6]]) print(a[0,1]) # 访问第一行第二列的元素 print(a[0:2, 1:]) # 切片获取第一行到第二行,第二列到第三列的子数组 ``` 2. **形状变换**: 可以使用`reshape()`, `flatten()`, `transpose()`等方法改变数组的形状。 ```python a = np.array([[1,2,3],[4,5,6]]) b = a.reshape(3,2) # 将2x3数组变为3x2数组 c = a.flatten() # 将2x3数组变为1D数组 d = a.T # 转置数组 ``` 3. **数组运算**: 包括加减乘除、矩阵运算、指数、对数等,NumPy提供了丰富的数学函数库。 ```python a = np.array([1,2,3]) b = np.array([4,5,6]) print(a + b) # 加法 print(np.dot(a, b)) # 点乘 ``` 4. **广播机制**: 当两个数组形状不匹配时,NumPy会自动扩展较小数组以适应较大数组,这就是广播机制。例如,一个1D数组可以与2D数组进行某些运算。 5. **数组复制**: `copy()`方法用于创建数组的深拷贝,不共享内存。 ```python a = np.array([1,2,3]) b = a.copy() # 创建独立的副本 ``` 6. **统计函数**: NumPy提供了诸如`mean()`, `std()`, `min()`, `max()`等统计函数,可以方便地对整个数组或其特定轴进行计算。 ```python a = np.array([1,2,3,4,5]) print(np.mean(a)) # 平均值 print(np.std(a)) # 标准差 ``` 了解了这些基础知识后,你就能更有效地使用NumPy进行大规模数据处理和科学计算。NumPy库的深入学习还包括高级主题,如ufuncs(通用函数)、高级索引、布尔索引、拼接与堆叠、以及各种排序和查找功能。在实际应用中,掌握这些内容能极大地提高编程效率。