【问题标题】:numpy create a boolean array of False [duplicate]numpy 创建一个布尔数组 False [重复]
【发布时间】:2019-12-07 14:36:22
【问题描述】:

我尝试使用np.empty 使用False 初始化Boolean 数组,

init_arr = empty(5)
init_arr.fill(False)

但我得到了

array([0., 0., 0., 0., 0.])

然后我创建一个pd.Series

dummy_ser = pd.Series(data=init_arr)

这就是为什么

0       0
1       0
2       0
3       0
4       0

我尝试使用 False 作为其初始化值来初始化具有不同长度的布尔系列。我想知道最好的方法是什么。

我正在使用Python 3.5.2Numpy 1.15.4

【问题讨论】:

  • 使用np.zeros(5, dtype=bool)

标签: python python-3.x pandas numpy


【解决方案1】:

这是因为empty() 函数创建了一个浮点数组:

In [14]: np.empty(5).dtype
Out[14]: dtype('float64')

有很多方法可以解决这个问题,提供 dtype=boolempty() 就是其中之一。

但我会像这样创建一个 False 数组:

In [17]: np.full(5, False)
Out[17]: array([False, False, False, False, False], dtype=bool)

【讨论】:

    【解决方案2】:

    你可以这样做:

    np.zeros(5).astype(bool)
    

    【讨论】:

    • 这将不必要地先创建一个int 数组,然后再将其转换为bool,同时浪费空间。
    • 是的,我同意,我认为这样做的有效方法是按照@jdehesa 的建议进行np.zeros(5, dtype = bool)
    【解决方案3】:

    这将起作用:

    >>> import numpy as np
    >>> np.broadcast_to(False, (2, 2))
    array([[ False,  False],
       [ False,  False]], dtype=bool)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-26
      • 2014-12-06
      • 1970-01-01
      • 2014-11-20
      • 2017-12-27
      • 2019-11-04
      相关资源
      最近更新 更多