2017-09-21 23 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