2017-07-03 66 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