2016-06-09 2 views
1

numpy.find_common_type() принимает два списка: array_types и scalar_types. Документы говорят, возвращаемое значение:Почему numpy.find_common_type принимает два отдельных списка?

максимум 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".

Итак, в чем смысл его принятия двух параметров? Реальные обычаи, которые я видел в дикой природе, просто передают [] в качестве второго аргумента.

ответ

1

Похоже, что в то время, когда документы говорят, что «если максимум scalar_types имеет другой вид», то, что они на самом деле означают, «если максимум scalar_types имеет больший вид», где «больше» определяется в другом чем на странице dtype.kind. Упорядочение в коде here:

['b', 'u', 'i', 'f', 'c', 'S', 'U', 'V', 'O', 'M', 'm'] 

scalar_types Так имеет эффект, например, когда он содержит тип int, но array_types содержит только логические или неподписанные типы. Просто быть «другим» недостаточно - он должен быть дальше вправо в приведенном выше списке.

Смежные вопросы