6.23星期四库作业
文章目录
- 6.23星期四库作业
- Numpy实践
- 练习一:创建从0到9的一维数字数组
- 练习二:创建一个元素全为`True`的 3×3 数组
- 练习三:创建一个二维数组,其中边界值为1,其余值为0
- Pandas实践
- 练习一:利用列表推导式写矩阵乘法
- Matplotlib实践
- 练习一: 两种绘图接口
Numpy实践
练习一:创建从0到9的一维数字数组
import numpy as nparr = np.arange(10)
print(arr)

练习二:创建一个元素全为True的 3×3 数组
import numpy as nparr = np.full([3, 3], True, dtype=np.bool)
print(arr)

练习三:创建一个二维数组,其中边界值为1,其余值为0
import numpy as np
Z = np.ones((10,10))
Z[1:-1,1:-1] = 0
print(Z)

Pandas实践
练习一:利用列表推导式写矩阵乘法
一般的矩阵乘法根据公式,可以由三重循环写出,请将其改写为列表推导式的形式。
M1 = np.random.rand(2,3)
M2 = np.random.rand(3,4)
res = np.empty((M1.shape[0],M2.shape[1]))
for i in range(M1.shape[0]):for j in range(M2.shape[1]):item = 0for k in range(M1.shape[1]):item += M1[i][k] * M2[k][j]res[i][j] = item
(np.abs((M1@M2 - res) < 1e-15)).all() # 排除数值误差
列表推导式的形式
import numpy as np
M1 = np.random.rand(2,3)
M2 = np.random.rand(3,4)
res = [[sum([M1[i][k] * M2[k][j] for k in range(M1.shape[1])]) for j in range(M2.shape[1])] for i in range(M1.shape[0])]
(np.abs((M1@M2 - res) < 1e-15)).all()

Matplotlib实践
练习一: 两种绘图接口
matplotlib提供了两种最常用的绘图接口
- 显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)
- 依赖pyplot自动创建figure和axes,并绘图
使用第一种绘图接口,是这样的:
x = np.linspace(0, 2, 100)fig, ax = plt.subplots()
ax.plot(x, x, label='linear')
ax.plot(x, x**2, label='quadratic')
ax.plot(x, x**3, label='cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()

第二种绘图接口
x = np.linspace(0, 2, 100)plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
