Python argmin方法的返回类型

Python argmin方法的返回类型,python,numpy,types,Python,Numpy,Types,和往常一样,我对numpy数据类型感到非常困惑 假设我定义了一个numpy数组: >a=np.array([1,2,3.]) 在代码中的某个地方,我想知道a是一个numpy数组还是其他类型的数据类型。以下是答案: 打印类型(a) 我是从伊皮顿内部做的。似乎返回了一个类型为“type”的对象,但我真的不知道如何在程序中处理“type”对象。我还可以使用iInstance验证a是否为numpy数组: >isinstance(一个np.ndarray) 正确 (附带问题:我如何返回一个易于解释的对象

和往常一样,我对numpy数据类型感到非常困惑

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

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

在代码中的某个地方,我想知道
a
是一个numpy数组还是其他类型的数据类型。以下是答案:

打印类型(a)

我是从伊皮顿内部做的。似乎返回了一个类型为“type”的对象,但我真的不知道如何在程序中处理“type”对象。我还可以使用iInstance验证
a
是否为numpy数组:

>isinstance(一个np.ndarray)
正确

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

回到主要问题

现在,我在以下情况下使用argmin方法:

>f=a.argmin()

我希望f的类型是整数,但不是。例如:

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

>类型(f)
numpy.int32

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

>isinstance(f,np.ndarray)
错误

但f也不是整数。这是什么?这是相关的,因为我将这个numpy.int32对象传递给了一个函数,它造成了混乱。当我第一次转换为int,然后将它传递给函数时,一切都很好。显然,函数需要int,但我传递了一个numpy.int32,结果很糟糕

argmin()方法的doc字符串表示它返回“index”。我不确定它是什么。我假设它是一个整数或整数的numpy数组。但是“index”两者都不是。它是“numpy.int32”的东西。那是什么

谢谢你的帮助


(旁白继续讨论:我仍然在寻找一个numpy函数或方法,它以某种易于解释的形式返回对象的类型,但我不知道如何编写一个查询类型对象的程序。我真的不知道类型对象是什么,也不知道如何与之交互。如果有一个numpy函数返回一些简单的东西,并告诉我“这是一个numpy浮点数组”或“这是一个标量浮点”或“这是一个numpy.int32”(不管是什么),那就太好了你想检查numpy ndarray的
.dtype
属性。如果你想让人解释结果,那么像
np.int32
这样的东西意味着“32位的numpy整数类型”。如果你想通过编程知道这一点,那么最好的方法可能是使用
np.typecode

>>> 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
返回的值相同,前提是
a
是该类型的数据数组

最后,如果只想检查它是整数还是浮点,可以检查数据类型的
.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'
它有点复杂,所以可能会让人困惑,但阅读可能是个好主意