Python之Numpy详细教程
时间: 2023-11-05 20:02:13 浏览: 86
NumPy的详细教程
5星 · 资源好评率100%
1. Numpy简介
NumPy是一个Python数学库,用于处理多维数组和矩阵。它是Python科学计算的核心库之一,提供了高效的数组操作和数学函数。NumPy的主要功能之一是N维数组对象(ndarray),它是一个由同类数据类型的元素组成的多维数组。
2. 安装Numpy
在终端输入以下命令安装Numpy:
```
pip install numpy
```
3. Numpy数组的创建
NumPy数组可以通过以下方式创建:
- 从Python列表或元组创建
- 使用函数创建,例如arange,linspace等
- 从文件中读取
```python
import numpy as np
# 从Python列表或元组创建
a = np.array([1, 2, 3])
print(a)
# 使用函数创建
b = np.arange(0, 10, 2) # 从0开始,步长为2,到10
print(b)
c = np.linspace(0, 1, 5) # 从0到1,分成5个数
print(c)
# 从文件中读取
d = np.loadtxt('data.txt')
print(d)
```
4. Numpy数组的属性
NumPy数组有以下属性:
- ndim:数组的维度
- shape:数组的形状,表示每个维度的大小
- size:数组中元素的总数
- dtype:数组中元素的数据类型
```python
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print("数组a的维度为:", a.ndim)
print("数组a的形状为:", a.shape)
print("数组a的元素总数为:", a.size)
print("数组a的数据类型为:", a.dtype)
```
5. Numpy数组的索引和切片
NumPy数组的索引和切片与Python列表类似。可以使用中括号[]和冒号:来进行索引和切片操作。需要注意的是,NumPy数组的索引和切片是从0开始的。
```python
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print("数组a的第一个元素为:", a[0])
print("数组a的第二个元素为:", a[1])
print("数组a的最后一个元素为:", a[-1])
print("数组a的前三个元素为:", a[:3])
print("数组a的后两个元素为:", a[-2:])
print("数组a的第二个到第四个元素为:", a[1:4])
```
6. Numpy数组的运算
NumPy数组支持各种数学运算,包括加减乘除、矩阵乘法、求和、平均值、标准差等。这些运算可以直接对数组进行操作,也可以使用NumPy提供的函数进行操作。
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 加法
c = a + b
print("a + b = ", c)
# 减法
c = a - b
print("a - b = ", c)
# 乘法
c = a * b
print("a * b = ", c)
# 除法
c = a / b
print("a / b = ", c)
# 矩阵乘法
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.dot(a, b)
print("a * b = ", c)
# 求和
a = np.array([1, 2, 3])
s = np.sum(a)
print("数组a的和为:", s)
# 平均值
a = np.array([1, 2, 3])
m = np.mean(a)
print("数组a的平均值为:", m)
# 标准差
a = np.array([1, 2, 3])
std = np.std(a)
print("数组a的标准差为:", std)
```
7. Numpy数组的广播
广播是NumPy中的一种特殊机制,它使得不同形状的数组之间进行运算变得更加容易。在广播中,较小的数组会自动复制扩展到与较大数组相同的形状,然后进行运算。
```python
import numpy as np
a = np.array([1, 2, 3])
b = 2
c = a * b
print(c)
a = np.array([[1, 2], [3, 4]])
b = np.array([1, 2])
c = a * b
print(c)
```
8. Numpy数组的转置和重塑
NumPy数组的转置和重塑操作可以通过transpose和reshape函数实现。
```python
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.transpose(a)
print("数组a的转置为:", b)
a = np.array([1, 2, 3, 4, 5, 6])
b = np.reshape(a, (2, 3))
print("数组a的重塑为:", b)
```
9. Numpy数组的堆叠和拆分
NumPy数组可以通过stack、hstack、vstack、split等函数进行堆叠和拆分操作。
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 垂直堆叠
c = np.vstack((a, b))
print("数组a和数组b的垂直堆叠为:\n", c)
# 水平堆叠
c = np.hstack((a, b))
print("数组a和数组b的水平堆叠为:\n", c)
# 拆分
c = np.array([1, 2, 3, 4, 5, 6])
d = np.split(c, 3)
print("数组c的拆分结果为:", d)
```
10. Numpy数组的排序
NumPy数组可以通过sort函数进行排序操作。
```python
import numpy as np
a = np.array([3, 1, 4, 2, 6, 5])
a.sort()
print("数组a的排序结果为:", a)
a = np.array([[3, 1], [4, 2], [6, 5]])
a.sort(axis=0)
print("数组a按照第0轴排序的结果为:\n", a)
```
阅读全文