En Python, ¿cómo creo un conjunto de formas arbitrarias llenas de todo verdadero o todo falso?
numpy ya permite la creación de matrices de todos unos o todos ceros muy fácilmente:
por ejemplo numpy.ones((2, 2))onumpy.zeros((2, 2))
Dado que Truey Falseestán representados en Python como 1y 0, respectivamente, solo tenemos que especificar que esta matriz debe ser booleana usando el dtypeparámetro opcional y hemos terminado.
numpy.ones((2, 2), dtype=bool)
devoluciones:
array([[ True, True],
[ True, True]], dtype=bool)
ACTUALIZACIÓN: 30 de octubre de 2013
Desde la versión 1.8 de numpy , podemos usar fullpara lograr el mismo resultado con la sintaxis que muestra más claramente nuestra intención (como señala fmonegaglia):
numpy.full((2, 2), True, dtype=bool)
ACTUALIZACIÓN: 16 de enero de 2017
Como al menos la versión 1.12 de numpy , fullarroja automáticamente los resultados al dtypesegundo parámetro, por lo que podemos escribir:
numpy.full((2, 2), True)
a=np.ones((2,2))seguido dea.dtype=boolNO funciona.fuente
onesyzerosno construyen una matriz de enteros. Construyen una serie de bools directamente.numpy.full((2,2), True)un equivalente?int 1abool True.onesyzeros, que crean matrices llenas de unos y ceros respectivamente, toman undtypeparámetro opcional :fuente
Si no tiene que ser grabable, puede crear una matriz con
np.broadcast_to:Si lo necesita escribible, también puede crear una matriz vacía y
fillusted mismo:Estos enfoques son solo sugerencias alternativas. En general, debe seguir
np.full,np.zerosonp.onescomo sugieren las otras respuestas.fuente
Rápidamente ejecuté un tiempo para ver si hay alguna diferencia entre la versión
np.fullynp.ones.Respuesta: no
Resultado:
IMPORTANTE
Con respecto a la publicación sobre
np.empty(y no puedo comentar, ya que mi reputación es demasiado baja):No hagas eso. NO USE
np.emptypara inicializar unaTruematriz completaComo la matriz está vacía, la memoria no se escribe y no hay garantía de cuáles serán sus valores, p. Ej.
fuente
numpy.full (Tamaño, Valor escalar, Tipo). También se pueden pasar otros argumentos, para obtener documentación al respecto, consulte https://docs.scipy.org/doc/numpy/reference/generated/numpy.full.html
fuente
np.full: ¡hace más de un año!