В Python, как мне создать простой массив произвольной формы, заполненный полностью True или всеми False?
NumPy позволяет очень легко создавать массивы всех единиц или всех нулей:
например 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)
ОБНОВЛЕНИЕ: 30 октября 2013
Начиная с версии 1.8 , мы можем использовать full
для достижения того же результата с синтаксисом, который более четко показывает наши намерения (как указывает fmonegaglia):
numpy.full((2, 2), True, dtype=bool)
ОБНОВЛЕНИЕ: 16 января 2017
Поскольку по крайней мере numpy версия 1.12 , full
автоматически приводит результаты ко dtype
второму параметру, поэтому мы можем просто написать:
numpy.full((2, 2), True)
a=np.ones((2,2))
послеa.dtype=bool
не работает.источник
ones
иzeros
ответы не построить массив целых чисел. Они создают массив bools напрямую.numpy.full((2,2), True)
эквивалент?int 1
вbool True
.ones
иzeros
, которые создают массивы, полные единиц и нулей соответственно, принимают необязательныйdtype
параметр:источник
Если это не должно быть доступно для записи, вы можете создать такой массив с помощью
np.broadcast_to
:Если вам это нужно для записи, вы также можете создать пустой массив и
fill
сам:Эти подходы являются только альтернативными предложениями. В общем , вы должны придерживаться
np.full
,np.zeros
илиnp.ones
как другие ответы предполагают.источник
Быстро побежал timeit , чтобы увидеть, если есть какое - либо различие между
np.full
иnp.ones
версией.Ответ: нет
Результат:
ВАЖНЫЙ
По поводу поста о
np.empty
(и я не могу комментировать, так как моя репутация слишком низкая):НЕ ДЕЛАЙТЕ ЭТОГО. НЕ ИСПОЛЬЗУЙТЕ,
np.empty
чтобы инициализировать всеTrue
массивПоскольку массив пуст, память не записывается, и нет никакой гарантии, какими будут ваши значения, например
источник
numpy.full (размер, скалярное значение, тип). Есть и другие аргументы, которые можно передать, для документации по этому поводу , проверьте https://docs.scipy.org/doc/numpy/reference/generated/numpy.full.html.
источник
np.full
- более года назад!ориентир для ответа Майкла Керри
источник