numpy.array与int的布尔混合

问题描述 投票:2回答:1

当我创建numpy.array,其中bool类型与int混合

np.array([True,True,100])
Out[656]: array([  1,   1, 100])

np.array([True,True,100]).dtype
Out[657]: dtype('int32')

它会将整个数组转换为int类型,我想也许int类高于bool是有意义的。


而且,如果我已经有bool类型array如下:

#When I assign the value by using the index 
b=np.array([True,True,False])
b[2]
Out[659]: False
b[2]=100
b
Out[661]: array([ True,  True,  True])

它将100对待bool True,这也是有道理的。


但是当我考虑这两种情况时,它让我很困惑。

你能解释一下吗?


非常感谢。

wen

python numpy
1个回答
2
投票
Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32

import numpy as np

np.array([True,True,100])
Out[3]: array([  1,   1, 100])

np.array([True,True,100], dtype=bool)
Out[4]: array([ True,  True,  True])

你应该使用dtype来获得数组所需的数据类型。

请检查文件

https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.array.html

对于第二个问题,请查看dtype参数中的说明,

“如果没有给出,那么类型将被确定为在序列中保持对象所需的最小类型。”

您创建没有dtype参数的数组,并且保存序列对象的值类型的最小值是bool,当您指定int值时,它将更改为bool

© www.soinside.com 2019 - 2024. All rights reserved.