2014-03-24 20 views
1

我需要用字母'K'替換下面數組中的一些字母。但每次我使用numpy.replace,然後numpy.delete它改變我的數組的形狀。有沒有辦法改變數組中的選定字母而不更改數組形狀?Python:在不改變數組形狀的情況下替換數組中的元素

AA = [['A', 'B', 'C']] 
AA = np.array(AA) 
AA = np.repeat(AA, 5, axis=0) 


AA = np.delete(AA, (1)) 
AA = np.insert(AA, (1), 'K') 

我想用'K'替換let數組中的任何字母。

有沒有簡單的方法來做到這一點?

+0

您最初將AA定義爲帶有一個元素(嵌套列表['A','B','C'])的列表。我想這就是你遇到困難的地方。 –

+0

你是什麼意思?用「K」代替let數組中的任何字母?你想用位置替換它們嗎?按值?等等。 – DSM

回答

0

我不清楚你想要完成什麼,以及你如何想象事情會變成現實。

從5×3數組開始, 然後刪除一個元素 現在您有14個元素。你認爲它會是什麼形狀?

也許你想直接分配

AA[1,2]='K' 
0

如果你想與另一個替換一個字母的每一個實例,嘗試像

A = np.array(list('ABC')) 
A = np.repeat(A, 5, axis=0) 
A[np.where(A == 'A')] = 'K' 

的numpy的功能numpy.where(A == 'A')返回指示,其中一組索引在A有字母"A"。然後我們使用這些索引來分割A陣列並進行重新分配。更明確地說,

inds = np.where(A == 'A') 
A[inds] = 'K' 

此外,如果你想選擇一個索引(說的數組中的位置1),並替換字母與「K」所有類似的信件,你可以不喜歡

A = np.array(list('ABC')) 
A = np.repeat(A, 5, axis=0) 
A[np.where(A == A[1])] = 'K' 
相關問題