2017-09-21 10 views
1

はのは、私は様々な形状でnumpyのアレイのリストを持っている上で動作しませんnp.place()X[X == 255] = 1のような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 

方法で255のすべての値を交換する必要があるとしましょうリスト。

答えて

1

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

それは、このユースケースでは問題ないかもしれませんが、 'np.where'を使用して新しい配列を割り当てます既存の配列の値を置き換えるのではなく、255を1に置き換えたものです。 –

+0

@JeremyMcGibbonはい、あなたは正しいです。私の意図は、配列の新しいリストを作成し、元のままにしておきます。配列の元のリストを変更したい場合は、あなたの方法が最適です。 – Alexander

2

配列のリストを持っていなければならず、新しい配列を作成するのではなくそれらの配列の値を変更したい場合は、リストを反復することでそれを行うことができます。

あなたが修正配列の新しいリストを作成するために、リスト内包で np.whereを使用することができます
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