gpt4 book ai didi

python - argmin 方法的返回类型

转载 作者:行者123 更新时间:2023-11-28 17:42:16 26 4
gpt4 key购买 nike

像往常一样,我对 numpy 数据类型感到很困惑。

假设我定义了一个 numpy 数组:

>>> a = np.array([1.,2.,3.])

我想知道代码中的某处是否 a是一个 numpy 数组与一些其他类型的数据类型。以下提供了答案:

>>> print type(a)
<type 'numpy.ndarray'>

我是在 iPython 中完成的。似乎返回了一个“类型”类型的对象,但我真的不知道如何在程序中处理“类型”对象。我还可以使用 isinstance 来验证 a是一个 numpy 数组:

>>> isinstance(a, np.ndarray)
True

(附带问题:我如何返回一个易于解释的对象来弄清楚 a 是什么?文档说类型返回对象的类型,但什么样的东西是对象的类型?它不是字符串或数字。它是某种对象。我似乎能够将类型对象转换为字符串,然后使用 split() 对其进行解析,但这似乎很危险。是否有关于类型对象的足够文档“类型”,我可以保证当我将它传递给 str 时,我会得到一些我可以用标准方式解析的东西?)

回到主要问题。

我现在在 a 上使用 argmin 方法:

>>> f = a.argmin()

我预计 f 的类型是整数,但不是。例如:

>>> type(3)
int
给出“int”。但是类型 f 给出:

>>> type(f)
numpy.int32

我不知道 numpy.int32 告诉我的答案是什么。这不是一个 numpy 数组:

>>> isinstance(f, np.ndarray)
False

但是 f 也不是整数。它是什么?这是相关的,因为我将这个 numpy.int32 对象传递给了一个函数,它造成了困惑。当我首先转换为 int,然后将其传递给函数时,一切正常。显然,该函数需要一个 int,但我向它传递了一个 numpy.int32 而不是得到了不好的结果。

argmin() 方法的文档字符串说它返回“索引”。我不确定是什么。我假设它是一个整数,或者一个 numpy 整数数组。但“指数”两者都不是。就是这个“numpy.int32”的东西。那是什么?

感谢您的帮助。

(旁白继续讨论:我仍然在寻找一个 numpy 函数或方法,它以某种易于解释的形式返回对象的类型。type 返回一个类型为“type”的对象,但我不知道如何编写一个查询类型对象的程序。我真的不知道类型对象是什么或如何与它交互。如果有一个返回简单内容并告诉我“这是一个 float 的 numpy 数组”的 numpy 函数会很棒或“这是一个标量 float ”或“这是一个 numpy.int32”(无论是什么)。我还没有找到一种方法来做到这一点)。

最佳答案

您想检查 numpy ndarray 的 .dtype 属性。如果你想让人来解释结果,那么像 np.int32 这样的东西意味着“32 位的 numpy 整数类型”。如果您想以编程方式了解这一点,那么最好的方法可能是使用 np.typecodes:

>>> np.typecodes
{'All': '?bhilqpBHILQPefdgFDGSUVOMm', 'Complex': 'FDG', 'AllFloat': 'efdgFDG',
'Integer': 'bhilqp', 'UnsignedInteger': 'BHILQP', 'Float': 'efdg',
'Character': 'c', 'Datetime': 'Mm', 'AllInteger': 'bBhHiIlLqQpP'}

这些代码中的每一个代表不同的类型:

>>> for t in np.typecodes['UnsignedInteger']:
... print(np.dtype(t).name)
...
uint8
uint16
uint32
uint32
uint64
uint64

请注意,例如 np.dtype(...) 的返回值与 a.dtype if a 的返回值相同> 是那种类型的 ndarray。

最后,如果你只是想检查它是整数还是 float ,你可以检查 dtype 的 .kind 属性,它也返回一个字符:

>>> np.dtype(np.float32).kind
'f'
>>> np.dtype(np.int32).kind
'i'
>>> np.dtype(np.uint32).kind
'u'
>>> np.dtype(np.bool).kind
'b'

它有点复杂,所以可能会让人感到困惑,但阅读the relevant part of the docs可能是个好主意。

关于python - argmin 方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22552668/

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