gpt4 book ai didi

numpy argmax 没有从生成器表达式中获取所有值

转载 作者:行者123 更新时间:2023-12-04 02:11:19 27 4
gpt4 key购买 nike

下面的输出

import numpy as np
print(np.argmax([i for i in range(0, 10)]))
print(np.argmax(i for i in range(0, 10)))

9
0

为什么 argmax 只减少生成器表达式一次?

最佳答案

比较这两个表达式:

In [682]: np.asarray([i for i in range(3)])
Out[682]: array([0, 1, 2])

In [683]: np.asarray(i for i in range(3))
Out[683]: array(<generator object <genexpr> at 0xb367bb9c>, dtype=object)
应用于列表的

asarray(或 array)会生成一个包含数字的数组。应用于生成器的相同内容会生成一个包含 1 项的 dtype=object 数组,即生成器本身。实际上它的形状是() (0d)。您可以使用 np.array(i for i in range(3))[()]

恢复此生成器

fromiter 可以迭代生成器,但是 array 只能迭代列表和元组之类的东西。

In [688]: np.fromiter((i for i in range(3)),int)
Out[688]: array([0, 1, 2])

argmax 取决于它的输入是一个数组。

关于numpy argmax 没有从生成器表达式中获取所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38068585/

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