在numpy中创建映射矩阵的最快方法

时间:2018-11-05 22:30:36

标签: function numpy matrix

我有以下问题。我有一个整数的2D numpy矩阵,假设它们的范围是0-19。矩阵的形状为(r,c)。将此矩阵称为M。我有一个附加数组,一个长度为19的查找表A,其元素是小的numpy向量,每个向量的长度为N。我要创建的是形状为(r,c, N)我用查找表副本替换了原始矩阵中的整数。

很简单,它只是矩阵上的一个函数,它会产生一个带有附加维的新矩阵。我为此编写了代码,如下所示:

num_rows, num_cols = M.shape
result = np.zeros(num_rows, num_cols, 3)

for col in range(num_cols):
    for row in range(num_ros):
        idx = M[row, col]
        result[row, col] = np.array(A[idx])

这有效,但是问题是它太慢了。如果M有500,000个元素,则每个矩阵大约需要600ms,这是我代码中的瓶颈。必须有一个聪明的,麻木的方式来处理此问题,该方法更快,但我想不到。

0 个答案:

没有答案