256

Python で、すべて True またはすべて False で満たされた任意の形状の numpy 配列を作成するにはどうすればよいですか?

4

7 に答える 7

364

TLDR; これが答えです:

numpy.full((2, 2), True)

より長い説明:

numpy を使用すると、すべて 1 またはすべて 0 の配列を非常に簡単に作成できます。

たとえばnumpy.ones((2, 2))、またはnumpy.zeros((2, 2))

TrueFalseは 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自動的に結果がdtype2 番目のパラメーターの にキャストされるため、次のように記述できます。

numpy.full((2, 2), True)
于 2014-01-16T23:22:01.010 に答える
30

oneszerosは、それぞれ 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)
于 2014-01-16T23:24:00.113 に答える
9

書き込み可能にする必要がない場合は、次の方法でそのような配列を作成できます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.zerosnp.ones、他の回答が示唆するようにする必要があります。

于 2017-04-15T02:57:39.267 に答える