2017-07-03 46 views
0

我有一个uint8的二维数组,我将调用matrix和一个叫做substitute的一维数组,其中包含256个uint8。numpy:从2d数组中快速替换uint8的值,没有任何循环

我的代码如下,但是我需要摆脱的循环:

def replaceValues(matrix, substitute) : 
    rows = matrix.shape[0] 
    cols = matrix.shape[1] 
    return [ [ substitute[ matrix[i][j] ] for j in range(cols) ] for i in range(rows) ] 

我试图numpy.vectorize却是有点慢。

你能帮忙吗?

+0

你能提供什么你正在尝试做的输入和输出的例子吗? –

+0

@GhilasBELHADJ我认为这个问题很清楚,即使没有输入和输出的例子,解释和简单的代码片段也足以理解OP的目标。 – jdehesa

+0

@jdehesa应该阅读代码来猜测'matrix'包含'substitute'的索引。这是一个重要的信息。 –

回答

0

可以在与NumPy做简单的通过indexing

matrixWithReplacedValues = substitute[matrix] 
+0

令人惊叹。 我来自老一代,你添加代码的一切,请更多理解:) – SebMa

+0

@SebMa没关系,这是什么,我的意思是粗鲁或任何事情,但对不起,如果你觉得它办法。我不知道降薪的原因(在问题或答案中)。 – jdehesa

+0

因为我以为你做了倒票。但现在我开始相信这是由管理员或自动系统完成的,这些系统使用了简单模式匹配,如简单,简单,简单等等。 – SebMa