Python Numpy 数组初始化与操作详解
56 浏览量
更新于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(通用函数)、高级索引、布尔索引、拼接与堆叠、以及各种排序和查找功能。在实际应用中,掌握这些内容能极大地提高编程效率。
2021-01-02 上传
2020-12-25 上传
2024-08-29 上传
2023-05-05 上传
2023-06-09 上传
2023-05-24 上传
2023-10-17 上传
2023-08-15 上传
weixin_38653687
- 粉丝: 3
- 资源: 973
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构