为什么 Pycharm 的类型检查器认为使用 getter 返回值会返回 ndarray?

问题描述 投票:0回答:1

我正在开发一个项目,其中一部分我必须生成一些随机数数组,并使用每个值进行模拟。首先,我生成一个整数/浮点数的 numpy 数组,然后在循环中提取它们并将它们传递给处理其余部分的对象。起初我每个循环只生成 1 个值,所以没有任何问题,但是当我将它移到循环之外并开始使用 [] 从中获取值时,它开始警告我它

Expected type 'int', got 'ndarray[Any, dtype]' instead
,表明它认为 my_array [i] 返回一个数组而不是一个值。这与 numpy.random 无关,因为创建数组时也会发生这种情况。工作示例:

import numpy as np

foo = np.array([0, 1, 2])
bar: int = foo[1]

print(type(bar), bar)

输出:

<class 'numpy.int64'> 1

这可以通过在创建数组后添加 tolist() 来解决,尽管这可能并不总是您想要的,并且我认为当您这样做时它会放弃一些类型检查。这是类型检查器的问题,还是有这种行为的原因?我正在使用 python 3.10.12 和 Pycharm 2024.2.2.

python arrays numpy pycharm
1个回答
0
投票

这对你有什么好处吗

import numpy as np

foo = np.array([0, 1, 2])
#bar: int = foo[1]
bar: int = int(foo[1])

print(type(bar), bar)

输出: 1

© www.soinside.com 2019 - 2024. All rights reserved.