NumPy对线性代数的支持
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
%config InlineBackend.figure_format = 'svg'
m1 = np.arange(1, 10).reshape((3, 3))
np.linalg.det(m1)
np.linalg.matrix_rank(m1)
m2 = np.arange(1, 5).reshape((2, 2))
np.linalg.det(m2)
b = np.array([5, 8]).reshape(-1, 1)
np.linalg.solve(m2, b)
np.linalg.matrix_rank(m2)
np.hstack((m2, b))
np.linalg.matrix_rank(np.hstack((m2, b)))
np.linalg.inv(m2)
np.linalg.inv(m2) @ b
x = np.arange(1, 11, dtype=np.float64)
y = np.array([10.14, 9.89, 8.41, 9.61, 7.95, 7.46, 6.62, 5.23, 4.7, 4.77])
np.corrcoef(x, y)
plt.scatter(x, y)
plt.xlabel('距离(km)')
plt.ylabel('单价(万元)')
A = np.vstack([x, np.ones(len(x))]).T
np.linalg.lstsq(A, y, rcond=None)
x = np.random.random(1000) * 100
y = 5 * x + np.random.randint(0, 100, 1000)
np.corrcoef(x, y)
plt.scatter(x, y)
x = np.random.random(1000) * 100
y = -5 * x + np.random.randint(0, 100, 1000)
np.corrcoef(x, y)
plt.scatter(x, y)
x = np.random.random(1000) * 100
y = np.random.random(1000) * 100
np.corrcoef(x, y)
plt.scatter(x, y)