numpy.array与int布尔混合

时间:2018-08-09 01:38:40

标签: python numpy

创建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类型,我 guess 也许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,这也是有道理的。


但是,当我同时考虑这两种情况时,这让我感到困惑。

请您对此稍作解释。


非常感谢。

1 个答案:

答案 0 :(得分: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