为什么numpy.find\u common\u类型需要两个单独的列表?
获取两个列表:为什么numpy.find\u common\u类型需要两个单独的列表?,numpy,Numpy,获取两个列表:数组类型和标量类型。文档称返回值为: 忽略标量类型的数组类型的最大值,除非标量类型的最大值是另一种类型() 我真的不明白这意味着什么,所以我试了一些例子。以下是一些似乎与上述描述相矛盾的情况: >>> np.find_common_type(['int16', 'int32'], ['uint64']) dtype('int32') >>> np.find_common_type(['int32', 'int64'], ['uint32'])
数组类型
和标量类型
。文档称返回值为:
忽略标量类型的数组类型的最大值,除非标量类型的最大值是另一种类型()
我真的不明白这意味着什么,所以我试了一些例子。以下是一些似乎与上述描述相矛盾的情况:
>>> np.find_common_type(['int16', 'int32'], ['uint64'])
dtype('int32')
>>> np.find_common_type(['int32', 'int64'], ['uint32'])
dtype('int64')
上面,scalar\u类型
具有kind=“u”
(无符号),但它不会覆盖具有kind=“i”
的数组类型
那么,采用两个参数有什么意义呢?我在野外看到的真正用法只是将[]
作为第二个参数。似乎当文档说“除非最大数量的标量类型是另一种类型”时,他们实际上的意思是“除非最大数量的标量类型是更大的类型”,其中“更大”以与dtype.kind
页面上不同的顺序定义。顺序在代码中:
因此,scalar\u类型
会产生影响,例如,当它包含int类型,但array\u类型
仅包含布尔或无符号类型时。仅仅“与众不同”是不够的——在上面的列表中,它必须更靠右
['b', 'u', 'i', 'f', 'c', 'S', 'U', 'V', 'O', 'M', 'm']