微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较带有numpy浮点数和常规浮点数的列表

如何解决比较带有numpy浮点数和常规浮点数的列表

给出以下代码

def to_l(pos_probs,threshold):
    return (pos_probs >= threshold).astype('int')

thresh = np.arange(0,0.2,0.1)
print(thresh)

这有效:

print([to_l([0.2,0.3],w) for w in thresh])

结果:

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

但这不是:

[to_l([0.2,w) for w in [0.,0.1]]

这不是:

to_l([0.2,0.1)

给出错误

TypeError: '>=' not supported between instances of 'list' and 'float'

在第二和第三种情况下,类型错误很明显。我们正在将列表[0.2,0.3]与浮点数0.1进行比较。
但是有人会解释为什么它在第一种情况下有效吗?

解决方法

这称为numpy支持的广播。因此,当操作中的两个操作数具有不同的形状时,numpy将尝试广播它并执行操作。

  • [0.2,0.3] >= 0将不起作用,因为此处不涉及numpy。您将收到错误:
TypeError: '>=' not supported between instances of 'list' and 'float'
  • np.array([1,2,3]) > 2可以使numpy广播成为现实。
  • [1,3] > np.float32(2)也可以使用

但是,

  • [1,3] > np.float(2)将不起作用,因为np.float只是python float的别名。但是np.float32np.float64分别是单精度和双精度数字的np实现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?