Python で、すべて True またはすべて False で満たされた任意の形状の numpy 配列を作成するにはどうすればよいですか?
7 に答える
TLDR; これが答えです:
numpy.full((2, 2), True)
より長い説明:
numpy を使用すると、すべて 1 またはすべて 0 の配列を非常に簡単に作成できます。
たとえばnumpy.ones((2, 2))
、またはnumpy.zeros((2, 2))
True
とFalse
は Pythonではそれぞれ1
ととして表されるため、オプションのパラメーターを0
使用してこの配列をブール値にするように指定するだけで完了です。dtype
numpy.ones((2, 2), dtype=bool)
戻り値:
array([[ True, True],
[ True, True]], dtype=bool)
更新: 2013 年 10 月 30 日
numpyバージョン1.8full
以降、( fmonegaglia が指摘しているように) 意図をより明確に示す構文で同じ結果を達成するために使用できます。
numpy.full((2, 2), True, dtype=bool)
更新: 2017 年 1 月 16 日
少なくとも numpy バージョン1.12以降では、full
自動的に結果がdtype
2 番目のパラメーターの にキャストされるため、次のように記述できます。
numpy.full((2, 2), True)
ones
とzeros
は、それぞれ 1 と 0 でいっぱいの配列を作成し、オプションのdtype
パラメーターを取ります。
>>> numpy.ones((2, 2), dtype=bool)
array([[ True, True],
[ True, True]], dtype=bool)
>>> numpy.zeros((2, 2), dtype=bool)
array([[False, False],
[False, False]], dtype=bool)
書き込み可能にする必要がない場合は、次の方法でそのような配列を作成できますnp.broadcast_to
。
>>> import numpy as np
>>> np.broadcast_to(True, (2, 5))
array([[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
書き込み可能にする必要がある場合は、空の配列を作成しfill
て自分で作成することもできます。
>>> arr = np.empty((2, 5), dtype=bool)
>>> arr.fill(1)
>>> arr
array([[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
これらのアプローチは代替提案にすぎません。np.full
一般に、 に固執するnp.zeros
かnp.ones
、他の回答が示唆するようにする必要があります。