回答:
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.8以降full
、構文を使用して同じ結果を達成するために使用できます(fmonegagliaが指摘するように)。
numpy.full((2, 2), True, dtype=bool)
更新:2017年1月16日
少なくともnumpyのので、バージョン1.12、full
自動的に結果をキャストdtype
我々だけ書くことができますので、二番目のパラメータの:
numpy.full((2, 2), True)
a=np.ones((2,2))
後にa.dtype=bool
は機能しないので注意してください。
numpy.full((2,2), True, dtype=bool)
ones
そしてzeros
答えは整数の配列を構築しません。彼らはブールの配列を直接構築します。
numpy.full((2,2), True)
同等?
int 1
ために重い作業をすることを想像することはできませんbool 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
、他の回答が示唆するように。
np.full
とnp.ones
バージョンに違いがあるかどうかを確認するために、timeitをすばやく実行しました。
回答:いいえ
import timeit
n_array, n_test = 1000, 10000
setup = f"import numpy as np; n = {n_array};"
print(f"np.ones: {timeit.timeit('np.ones((n, n), dtype=bool)', number=n_test, setup=setup)}s")
print(f"np.full: {timeit.timeit('np.full((n, n), True)', number=n_test, setup=setup)}s")
結果:
np.ones: 0.38416870904620737s
np.full: 0.38430388597771525s
重要
についての投稿についてnp.empty
(そして私の評判が低すぎるのでコメントすることはできません):
それをしないでください。np.empty
all- True
arrayの初期化には使用しないでください
配列が空であるため、メモリは書き込まれず、値がどのようになるかは保証されません。たとえば、
>>> print(np.empty((4,4), dtype=bool))
[[ True True True True]
[ True True True True]
[ True True True True]
[ True True False False]]
>>> a = numpy.full((2,4), True, dtype=bool)
>>> a[1][3]
True
>>> a
array([[ True, True, True, True],
[ True, True, True, True]], dtype=bool)
numpy.full(サイズ、スカラー値、タイプ)。渡すことができる他の引数もあります。そのドキュメントについては、https://docs.scipy.org/doc/numpy/reference/generated/numpy.full.htmlを確認してください