2017-11-30 10 views
0

私はnumpy配列に0と1を設定しました。配列の作成後、いくつかの0を1に置き換える必要があります。ここでは、配列のための私のコードは次のとおりです。numpy配列の数字を置き換えます。

grid = np.random.randint(0, 2, size=(4,4)) 
np.random.shuffle(grid) 

私が試した:

grid[grid == 0] = np.random.binomial(1, 0.9, size = None) 

と:

grid[grid == 0] = np.random.randint(0, 2) 

をしかし、その後、すべてのゼロが1か全く置き換えで置き換えられています。いくつかのゼロだけを置き換える方法はありますか?代わりに、単一のドローの

+0

はい、あなただけの*要素/アイテムを識別するための方法が必要です*その置き換えたい - 'grid == 0'は** all ** zeroesを指定します。 ndarrayをインデックスできるいくつかの方法があります。 - https://docs.scipy.org/doc/numpy/user/basics.indexing.html – wwii

答えて

1

どのように....のみ二回、それを適用した後に動作するようです:

grid += np.random.binomial(1, 0.9, size=grid.shape) * (grid == 0) 
+0

ありがとうございます@ pho7、これは完全に動作します。 – nattys

1

、あなたがより良いもう一度試して複数回

grid = np.random.randint(0, 2, size=(4,4)) 
np.random.shuffle(grid) 

grid[grid==0] = np.random.binomial(1, 0.5, size = grid[grid==0].shape[0]) 
0

を描きます。

シャッフル方法が動作します。

np.random.shuffle(grid) 

ものの、この程度

関連する問題