gpt4 book ai didi

python - 与重载运算符的 numpy 元素比较

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:53 26 4
gpt4 key购买 nike

我有两个 numpy 数组,其中包含具有重载比较运算符的对象,该运算符返回另一个对象,而不是 True 或 False。如何创建一个包含各个比较结果的数组。我希望结果是一个对象数组,如下所示

lhs = ... # np.array of objects with __le__ overloaded
rhs = ... # another np.array
result = np.array([l <= r for l, r in izip(lhs, rhs)])

但是lhs <= rhs给了我一系列 bool 值。有没有办法到达 result__le__ 的结果数组方法调用而不编写 python 循环?

最佳答案

Numpy's Github pagendarray指出比较运算符等同于 Numpy 中的 ufunc 形式。因此lhs <= rhs相当于np.less_equal(lhs, rhs)

来自 np.info(np.less_equal) 的输出

 Returns
------- out : bool or ndarray of bool
Array of bools, or a single bool if `x1` and `x2` are scalars.

要解决这个问题,您可以使用:

import operator
result = np.vectorize(operator.le)(lhs, rhs)

np.vectorize也将允许您在比较中使用 Numpy 的广播。它将使用您的对象比较,并以与您的列表理解相同的形式返回这些比较结果的 numpy 数组。

关于python - 与重载运算符的 numpy 元素比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com