欢迎访问宙启技术站
智能推送

如何使用Python中的numpy库进行数值计算?

发布时间:2023-05-21 09:10:39

numpy是Python中最常用的数值计算库之一。它提供了高性能的数组和矩阵计算功能,可以进行元素级的操作、矢量化计算、广播等,使得数值计算变得非常高效和灵活。

下面介绍如何使用numpy进行数值计算。

1.引入numpy库

在使用前需要先引入numpy库。通常使用以下命令:

import numpy as np

2.创建numpy数组

numpy的核心数据结构是数组ndarray。我们可以通过numpy提供的一系列函数来快速创建数组。以下是一些创建数组的常用函数:

a = np.array([1,2,3]) # 从列表或元组创建一维数组
b = np.zeros((3, 4)) # 创建一个3行4列的全0数组 
c = np.ones((2,3,4), dtype=np.int16) # 创建一个2x3x4的全1数组,类型为int16
d = np.empty((2,3)) # 创建一个2x3的数组,初始值是未定义的
e = np.arange(10) # 创建一个包含0到9的一维数组
f = np.linspace(0,1,5) # 创建一个包含0到1的等差数列,分成5个数

3.数组属性

可以通过以下属性获取数组的信息:

a.shape # 数组的形状,是一个元组(n,m)
a.dtype # 数组元素的类型
a.ndim # 数组的维度
a.size # 数组的大小,是元素个数n*m
a.itemsize # 数组每个元素占用的字节数

4.数组的运算

numpy可以进行元素级运算、矢量运算和广播运算等操作。以下是一些常见的操作:

a = np.array([1,2,3])
b = np.array([4,5,6])

# 元素级运算
c = a + b  # [5, 7, 9]
d = a * 2  # [2, 4, 6]
e = a ** 2 # [1, 4, 9]

# 矢量运算
f = np.dot(a, b) # 32,等同于a@b

# 广播运算
g = a * np.array([[1], [2], [3]]) # [[1, 2, 3], [2, 4, 6], [3, 6, 9]]

5.索引和切片

numpy数组的索引和切片和Python的列表有些类似。以下是一些常见的操作:

a = np.array([1,2,3,4,5])

# 索引
b = a[0]   # 1
c = a[-1]  # 5

# 切片
d = a[1:4] # [2, 3, 4]
e = a[1:-1] # [2, 3, 4]

f = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 二维数组的索引和切片
g = f[0,0]  # 1
h = f[:,0]  # [1,4,7]
i = f[1:, 1:] # [[5,6], [8,9]]

6.常用函数

numpy提供了很多常用函数,从统计、数学、线性代数、傅里叶变换等方面都有涉及。下面是一些常用的函数示例:

a = np.array([1,2,3,4,5])
# 统计函数
b = np.mean(a)  # 3.0
c = np.std(a)   # 1.414...
d = np.var(a)   # 2.0

f = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 数学函数
g = np.exp(f)   # 对数值上进行e^x 运算
h = np.sin(f)   # 对角度上进行sin 运算

# 线性代数函数
i = np.linalg.norm(f) # 求矩阵的二范数
j = np.linalg.inv(f)  # 求矩阵的逆矩阵

# 傅里叶变换
from numpy.fft import fft, ifft
k = np.array([1, 2, 1, -1])
l = fft(k) # 傅里叶变换
m = ifft(l) # 傅里叶逆变换

使用numpy可以方便地进行数值计算。熟练使用numpy,可以大大提高计算效率和准确性。