numpy.find_common_type()
有两个列表:array_types
和scalar_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_types
有kind="u"
(无符号),但不会覆盖array_types
kind="i"
。
那么,它有两个参数是什么意思?无论如何,我在野外看到的真实用法只是传递[]
作为第二个参数。
答案 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
只包含布尔或无符号类型时。仅仅是"不同"还不够 - 它必须在上面的列表中更靠右边。