我使用Scilab,并希望将布尔数组转换为整数数组:
>>> x = np.array([4, 3, 2, 1])
>>> y = 2 >= x
>>> y
array([False, False, True, True], dtype=bool)
在Scilab中,我可以使用:
>>> bool2s(y)
0. 0. 1. 1.
或者只是将其乘以1:
>>> 1*y
0. 0. 1. 1.
在Python中有没有一个简单的命令,或者我必须使用一个循环?
发布于 2013-07-07 03:10:26
Numpy数组有一个astype
方法。做y.astype(int)
就行了。
请注意,可能甚至不需要这样做,这取决于您使用数组的用途。在许多情况下,Bool会自动提升为int,因此您可以将其添加到int数组中,而不必显式转换它:
>>> x
array([ True, False, True], dtype=bool)
>>> x + [1, 2, 3]
array([2, 2, 4])
发布于 2013-07-07 03:15:05
1*y
方法也适用于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])
如果您正在寻找一种将Python列表从布尔型转换为整型的方法,您可以使用map
来实现:
>>> 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]
或者使用列表理解:
>>> testList
[False, False, True, True]
>>> [int(elem) for elem in testList]
[0, 0, 1, 1]
发布于 2013-07-07 03:17:14
使用numpy,您可以执行以下操作:
y = x.astype(int)
如果您使用的是非numpy数组,则可以使用list comprehension
y = [int(val) for val in x]
https://stackoverflow.com/questions/17506163
复制相似问题