No Python, como criar uma matriz numpy de forma arbitrária preenchida com todos os True ou todos os False?
o numpy já permite a criação de matrizes de todos os zeros ou todos com muita facilidade:
por exemplo numpy.ones((2, 2))
ounumpy.zeros((2, 2))
Como True
e False
são representados no Python como 1
e 0
, respectivamente, temos apenas que especificar que esta matriz deve ser booleana usando o dtype
parâmetro opcional e pronto.
numpy.ones((2, 2), dtype=bool)
retorna:
array([[ True, True],
[ True, True]], dtype=bool)
ATUALIZAÇÃO: 30 de outubro de 2013
Desde a versão 1.8 do numpy , podemos usar full
para obter o mesmo resultado com sintaxe que mostra mais claramente nossa intenção (como fmonegaglia aponta):
numpy.full((2, 2), True, dtype=bool)
ATUALIZAÇÃO: 16 de janeiro de 2017
Como pelo menos a versão numpy 1.12 , full
lança automaticamente os resultados para dtype
o segundo parâmetro, para que possamos escrever:
numpy.full((2, 2), True)
a=np.ones((2,2))
seguido dea.dtype=bool
NÃO funciona.fonte
ones
ezeros
não constroem uma matriz de números inteiros. Eles constroem uma matriz de bools diretamente.numpy.full((2,2), True)
um equivalente?int 1
parabool True
.ones
ezeros
, que criam matrizes cheias de uns e zeros, respectivamente, usam umdtype
parâmetro opcional :fonte
Se não precisar ser gravável, você poderá criar uma matriz com
np.broadcast_to
:Se você precisar gravá-lo, também poderá criar uma matriz vazia e
fill
você mesmo:Essas abordagens são apenas sugestões alternativas. Em geral, você deve ficar com
np.full
,np.zeros
ounp.ones
como as outras respostas sugerem.fonte
Rapidamente executou um timeit para ver se há alguma diferença entre a versão
np.full
enp.ones
.Resposta: Não
Resultado:
IMPORTANTE
Em relação ao post sobre
np.empty
(e não posso comentar, pois minha reputação é muito baixa):NÃO FAÇA ISSO. NÃO USE
np.empty
para inicializar umTrue
conjunto completoComo a matriz está vazia, a memória não é gravada e não há garantia, quais serão seus valores, por exemplo
fonte
numpy.full (tamanho, valor escalar, tipo). Também existem outros argumentos que podem ser passados, para documentação sobre isso, verifique https://docs.scipy.org/doc/numpy/reference/generated/numpy.full.html
fonte
np.full
- mais de um ano atrás!