首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将布尔数组转换为整型数组

如何将布尔数组转换为整型数组
EN

Stack Overflow用户
提问于 2013-07-07 03:08:20
回答 6查看 308.9K关注 0票数 164

我使用Scilab,并希望将布尔数组转换为整数数组:

代码语言:javascript
运行
复制
>>> x = np.array([4, 3, 2, 1])
>>> y = 2 >= x
>>> y
array([False, False,  True,  True], dtype=bool)

在Scilab中,我可以使用:

代码语言:javascript
运行
复制
>>> bool2s(y)
0.    0.    1.    1.  

或者只是将其乘以1:

代码语言:javascript
运行
复制
>>> 1*y
0.    0.    1.    1.  

在Python中有没有一个简单的命令,或者我必须使用一个循环?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-07-07 03:10:26

Numpy数组有一个astype方法。做y.astype(int)就行了。

请注意,可能甚至不需要这样做,这取决于您使用数组的用途。在许多情况下,Bool会自动提升为int,因此您可以将其添加到int数组中,而不必显式转换它:

代码语言:javascript
运行
复制
>>> x
array([ True, False,  True], dtype=bool)
>>> x + [1, 2, 3]
array([2, 2, 4])
票数 208
EN

Stack Overflow用户

发布于 2013-07-07 03:15:05

1*y方法也适用于Numpy:

代码语言:javascript
运行
复制
>>> 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来实现:

代码语言:javascript
运行
复制
>>> 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]

或者使用列表理解:

代码语言:javascript
运行
复制
>>> testList
[False, False, True, True]
>>> [int(elem) for elem in testList]
[0, 0, 1, 1]
票数 65
EN

Stack Overflow用户

发布于 2013-07-07 03:17:14

使用numpy,您可以执行以下操作:

代码语言:javascript
运行
复制
y = x.astype(int)

如果您使用的是非numpy数组,则可以使用list comprehension

代码语言:javascript
运行
复制
y = [int(val) for val in x]
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17506163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档