np.sctypes
x = np.array([1, 2, 3, 4])
print(type(x)) print(x.ndim) print(x.shape)
np.zeros((2, 3)) np.ones((2, 3)) np.full((2, 3), -1) np.empty((2, 3)) np.zeros_like(x) np.full_like(x)
单位矩阵 np.identity(3)
对角矩阵 np.diag([1, 2, 4], k=-1) np.diagflat([1, 2, 4], k=-1)
三角矩阵 np.tri(3)
等间距变化 np.arange(1, 6, 2) np.linspace(0, 1, 5) np.logspace(0, 3, 4)
x[:4] x[1, 2] x[:, 2] x[:3].copy()
x[[1, 3]] print(x > 4) print(x[x > 4])
x.reshape(4) np.expand_dims(y, axis=1) y[:, np.newaxis]
np.vstack((x, x, x)) np.hstack((x, x, x)) np.stack((x, x, x), axis=1)
A = np.eye(2) B = np.zeros((2, 3)) C = np.ones((3, 2)) D = np.eye(3) * 2
np.block([[A, B], [C, D]])
np.tile(x, (2, 1))
np.repeat(x, 3, axis=1)
np.transpose(x) x.T x.swapaxes(0, 1)
不同形状的数据运算 需要广播成一样大小的
x + y x - y x * y Hadamard product x / y
rint
比较运算
需要产生新的组合关系, 每个输出 = 输入变量的加权组合 线性变换可以连续组合 多个输入因素 × 多个权重 = 结果
A @ B np.dot
A = [[2, 1], [1, 1], [3, 2]] B = [[50, 60, 70], [20, 25, 30]]
A的行* B的列
C = [ [2 * 50 + 1 * 20, 1 * 50 + 1 * 20, 3 * 50 + 2 * 20] [2 * 60 + 1 * 25, ] [2 * 70 + 1 * 30, ] ]
员工 项目1 项目2 员工1 10小时 5小时 员工2 8小时 6小时 员工3 12小时 4小时
项目 时薪 项目1 50 项目2 80
A = [ [10, 5], [8, 6], [12, 4] ]
B = [50, 80]
A * B = [ 900, 880, 920 ]