NumPy
⚠️文件中如果引入numpy,文件名不能叫numpy,会覆盖掉numpy模块,导致numpy.array等函数无法使用。
1. 导入
import numpy as np
2. 生成NumPy数组
x = np.array([1.0, 2.0, 3.0])
print(x) # [1.0, 2.0, 3.0]
type(x) # <class 'numpy.ndarray'>
3. 算术运算
>>> x = np.array([1.0,2.0,3.0])
>>> y = np.array([2.0,4.0,6.0])
>>> x+y
array([3., 6., 9.])
>>> x-y
array([-1., -2., -3.])
>>> x*y
array([ 2., 8., 18.])
>>> x/y
array([0.5, 0.5, 0.5])
⚠️两个ndarray的元素个数须相同,注“对应元素”英文是element-wise,“对应元素乘法” element-wise product。
>>> x/2
array([0.5, 1. , 1.5])
ndarray也可以与单一元素进行计算,称之为“广播”?,广播相当于标量拓展为与前面相同的维度。
4. 二维数组
⚠️需要双层[],比如 [ [ ], [ ] ]
A = np.array([[1,2], [3,4]])
B = np.array([[3,4], [5,6]])
print(A)
print(A.shape) # (2,2)
print(A.dtype) # int64
print(A + B) # [[4,6], [8,10]]
print(A * B) # [[3,8], [15,24]] 从代码的角度看(不从数学角度,存疑?)
5. 访问元素
A = np.array([[1,2],[3,4]])
print(A[0]) # [1 2]
print(A[0][1]) # 2
for row in A:
print(row) # [1,2] [3,4]
其他访问方式:
>>> X = X.flatten() # 将X转换为一维数组
>>> print(X)
[51 55 14 19 0 4]
>>> X[np.array([0, 2, 4])] # 获取索引为0、2、4的元素
array([51, 14, 0])
>>> X > 15
array([ True, True, False, True, False, False], dtype=bool)
>>> X[X>15]
array([51, 55, 19])
Matplotlib
1. 绘制函数图像
直接画一个sin函数
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 6, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
x 是np.arange生成的[0, 0.1, 0.2, 0.3 0.4 … 5.8, 5.9]
y 是np.sin函数
然后传递给plt的plot方法,最后show
下面是sin和cos的函数图像叠加
x = np.arange(0, 6, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle="--", label="cos")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()
2. 显示图片
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('lena.png') # 读入图像(设定合适的路径!)
plt.imshow(img)
plt.show()
本章只介绍了关于 Python 的最低限度的知识,想进一步了解 Python 的读者,可以参考下面这些图书。首先推荐《Python 语言及其应用》 一书。这是一本详细介绍从 Python 编程的基础到应用的实践性的入门书。关于 NumPy,《利用 Python 进行数据分析》 一书中进行了简单易懂的总结。此外,“Scipy Lecture Notes”这个网站上也有以科学计算为主题的 NumPy 和 Matplotlib 的详细介绍,有兴趣的读者可以参考。