代码之家  ›  专栏  ›  技术社区  ›  BENY

numpy.array布尔混合与int

  •  2
  • BENY  · 技术社区  · 6 年前

    当我创建 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类型,i 猜测 也许int类高于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个 布尔 True 这也是有道理的。


    然而,当我考虑到这两种情况时,我感到困惑。

    你能解释一下吗?


    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   youDaily    6 年前
    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

    对于第二个问题,请查看 D型 参数,

    如果没有给定,则该类型将被确定为保存序列中的对象所需的最小类型。

    创建数组时不使用 D型 参数,保持序列对象的值类型的最小值为 bool ,当您分配 int 值将更改为 布尔 .