una resta recorrer multiplicacion matriz matrices llenar imprimir dimensiones como array python integer boolean type-conversion scilab

python - resta - Cómo convertir una matriz booleana a una matriz int



recorrer matriz python numpy (5)

Uso Scilab y quiero convertir una matriz de booleanos en una matriz de enteros:

>>> x = np.array([4, 3, 2, 1]) >>> y = 2 >= x >>> y array([False, False, True, True], dtype=bool)

En Scilab puedo usar:

>>> bool2s(y) 0. 0. 1. 1.

o incluso simplemente multiplique por 1:

>>> 1*y 0. 0. 1. 1.

¿Hay un comando simple para esto en Python, o tendré que usar un bucle?


El método 1*y funciona en Numpy:

>>> import numpy as np >>> x = np.array([4, 3, 2, 1]) >>> y = 2 >= x >>> y array([False, False, True, True], dtype=bool) >>> 1*y # Method 1 array([0, 0, 1, 1]) >>> y.astype(int) # Method 2 array([0, 0, 1, 1])

Si está buscando una forma de convertir listas de Python de Boolean a int, puede usar el map para hacerlo:

>>> testList = [False, False, True, True] >>> map(lambda x: 1 if x else 0, testList) [0, 0, 1, 1] >>> map(int, testList) [0, 0, 1, 1]

O usando listas de comprensión:

>>> testList [False, False, True, True] >>> [int(elem) for elem in testList] [0, 0, 1, 1]


La mayoría de las veces no necesita conversión:

>>>array([True,True,False,False]) + array([1,2,3,4]) array([2, 3, 3, 4])

La forma correcta de hacerlo es:

yourArray.astype(int)

o

yourArray.astype(float)


Las matrices Numpy tienen un método de astype . Simplemente haz y.astype(int) .

Tenga en cuenta que puede que ni siquiera sea necesario hacerlo, dependiendo de para qué esté utilizando la matriz. Bool se autopromotorizará a int en muchos casos, por lo que puede agregarlo a matrices en int sin tener que convertirlo explícitamente:

>>> x array([ True, False, True], dtype=bool) >>> x + [1, 2, 3] array([2, 2, 4])


Sé que usted solicitó soluciones sin bucles, pero las únicas soluciones con las que puedo pensar probablemente sean internas.

map(int,y)

o:

[i*1 for i in y]

o:

import numpy y=numpy.array(y) y*1


Usando Numpy, puedes hacer:

y = x.astype(int)

Si estuviera usando una matriz no numpy, podría usar una lista de comprensión :

y = [int(val) for val in x]