`np.bool`、`bool`和`np.bool_`区别

问题描述

已解决

Traceback (most recent call last):
  File "run_sample.py", line 6, in <module>
    from misc import pyutils
  File "***/ReCAM-main/misc/pyutils.py", line 86, in <module>
    def to_one_hot(sparse_integers, maximum_val=None, dtype=np.bool):
  File "/usr/local/lib/python3.8/dist-packages/numpy/__init__.py", line 305, in __getattr__
    raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'bool'.
`np.bool` was a deprecated alias for the builtin `bool`. To avoid this error in existing code, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations


解决方案:

这个错误是因为在numpy 1.20版本中,np.bool被弃用,建议使用内置的bool或者np.bool_。将pyutils.py文件中的第86行中的np.bool替换为boolnp.bool_

修改后的代码如下:

def to_one_hot(sparse_integers, maximum_val=None, dtype=bool):
    # 其他代码保持不变

或者

def to_one_hot(sparse_integers, maximum_val=None, dtype=np.bool_):
    # 其他代码保持不变

区别:

np.boolboolnp.bool_都是用于表示布尔类型的,但存在一些差异:

  1. np.bool:这是NumPy库中的一个数据类型,表示一个布尔数组。它与Python内置的bool类型具有相同的行为,但在NumPy中,所有的数组都是以np.ndarray的形式表示的,因此使用np.bool可以确保代码在NumPy中的行为与在Python中的行为一致。

  2. bool:这是Python内置的一个类型,表示一个布尔值。它在大多数情况下的行为与NumPy中的np.bool相同,但在某些情况下,例如在进行算术运算时,它可能会被隐式地转换为其他类型(例如整数)。

  3. np.bool_:这是NumPy库中的一个数据类型,表示一个布尔数组。它与np.bool具有相同的行为,但在某些情况下,例如在进行算术运算时,它可能会被保留为布尔类型,而不是被隐式地转换为其他类型。这可以帮助确保在进行数学运算时,结果的类型始终是布尔类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Env1sage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值