为什么numpy.find_common_type采用两个单独的列表?

时间:2016-06-09 22:20:39

标签: numpy

numpy.find_common_type()有两个列表:array_typesscalar_types。文档说返回值是:

  

array_types忽略scalar_types的最大值,除非scalar_types的最大值不同(dtype.kind)。

我真的不明白这意味着什么,所以我尝试了一些例子。以下是一些似乎与上述描述相矛盾的内容:

>>> np.find_common_type(['int16', 'int32'], ['uint64'])
dtype('int32')

>>> np.find_common_type(['int32', 'int64'], ['uint32'])
dtype('int64')

以上scalar_typeskind="u"(无符号),但不会覆盖array_types kind="i"

那么,它有两个参数是什么意思?无论如何,我在野外看到的真实用法只是传递[]作为第二个参数。

1 个答案:

答案 0 :(得分:1)

似乎虽然文档说"除非scalar_types的最大值是另一种类型"他们实际意味着什么"除非scalar_types的最大值是更大的类型",其中"更大"的定义顺序与[NSString stringWithKeywordFormat:@"hello {user_name}, today is {day_of_week}!" keywords:@{@"user_name":@"Jack", @"day_of_week":@"Thursday"}]; 页面的顺序不同。排序在代码here中:

dtype.kind

因此['b', 'u', 'i', 'f', 'c', 'S', 'U', 'V', 'O', 'M', 'm'] 会产生影响,例如当它包含int类型但scalar_types只包含布尔或无符号类型时。仅仅是"不同"还不够 - 它必须在上面的列表中更靠右边。