gpt4 book ai didi

python - numpy all 不同于 builtin all

转载 作者:太空狗 更新时间:2023-10-29 21:43:50 25 4
gpt4 key购买 nike

numpy 的 all 中出现这种怪异现象的原因是什么?

>>> import numpy as np
>>> np.all(xrange(10))
False
>>> np.all(i for i in xrange(10))
True

最佳答案

Numpy.all 不理解生成器表达式。

来自文档

 numpy.all(a, axis=None, out=None)

Test whether all array elements along a given axis evaluate to True.
Parameters :

a : array_like

Input array or object that can be converted to an array.

好吧,不是很明确,所以让我们看一下代码

def all(a,axis=None, out=None):
try:
all = a.all
except AttributeError:
return _wrapit(a, 'all', axis, out)
return all(axis, out)

def _wrapit(obj, method, *args, **kwds):
try:
wrap = obj.__array_wrap__
except AttributeError:
wrap = None
result = getattr(asarray(obj),method)(*args, **kwds)
if wrap:
if not isinstance(result, mu.ndarray):
result = asarray(result)
result = wrap(result)
return result

由于生成器表达式没有 all 方法,它最终会调用 _wrapit_wrapit 中,它首先检查 __array_wrap__ 方法,该方法生成 AttributeError 最后结束调用 asarray 生成器表达式

来自numpy.asarray的文档

 numpy.asarray(a, dtype=None, order=None)

Convert the input to an array.
Parameters :

a : array_like

Input data, in any form that can be converted to an array. This includes lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays.

关于接受的各种类型的输入数据都有详细的记录,这绝对不是生成器表达式

最后,尝试

>>> np.asarray(0 for i in range(10))
array(<generator object <genexpr> at 0x42740828>, dtype=object)

关于python - numpy all 不同于 builtin all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391501/

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