【发布时间】:2020-08-05 15:41:21
【问题描述】:
我有一个包含 N 个矩阵的列表,每个矩阵的形状都相同 (dim1,dim2)。 我有另一个 N 个整数列表,说明每个矩阵重复多少次。 创建矩阵列表中每个矩阵的numpy数组的最快方法是什么,根据重复列表重复x次?
例如:
mat_a = np.array([[1, 2],[3, 4]]) # mat_a.shape = (2,2)
mat_b = np.array([[5, 6],[7, 8]]) # mat_b.shape = (2,2)
matrices = [mat_a, mat_b]
repeats = [2, 3]
result = np.array([mat_a, mat_a, mat_b, mat_b, mat_b]) # results.shape = (5, 2, 2)
我能想到的唯一方法是使用循环,这非常慢:
result = np.array([], dtype=float).reshape(0, 2, 2)
for i in range(len(repeats)):
result = np.vstack((result, np.tile(matrices[i], (repeats[i], 1, 1))))
【问题讨论】:
-
np.repeat(matrices, repeats, axis=0)给出正确答案