Your Site Title

numpy

create array

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)

数组访问

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

需要产生新的组合关系, 每个输出 = 输入变量的加权组合 线性变换可以连续组合 多个输入因素 × 多个权重 = 结果

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 ]

Reference