2017-09-21 69 views
1

比方說,我有numpy的陣列的列表具有不同的形狀和需要1更換值

A = np.array([[0,255], [0,0]]) 
B = np.array([[0, 255,255], [255,0,0]]) 
list_of_array = [A, B] # list could have many more arrays 

方法,如np.place()X[X == 255] = 1以取代255的所有值不工作的名單。

回答

1

可以使用np.where在列表理解創建修改陣列的新名單:

updated_arrays = [np.where(a == 255, 1, a) for a in list_of_array] 
+0

它可能不是用於該用途的情況下無所謂,但使用'np.where'將分配新的陣列將255替換爲1,而不是替換現有數組中的值。 –

+0

@JeremyMcGibbon是的,你是對的。我的意圖是創建一個新的陣列列表,並保持原始狀態不變。如果你喜歡改變原始數組列表,那麼你的方法是最好的。 – Alexander

2

如果你必須有一個數組的列表,並且想修改這些數組中的值而不是創建新的數組,那麼你可以通過迭代列表來完成。

import numpy as np 

A = np.array([[0,255], [0,0]]) 
B = np.array([[0, 255,255], [255,0,0]]) 
list_of_array = [A, B] # list could have many more arrays 

for array in list_of_array: 
    array[array == 255] = 1