Какова цель и полезность опции subok в numpy.zeros_like ()? - PullRequest
0 голосов
/ 27 мая 2018

Используя numpy's zeros_like и связанные с ним функции, существует опция

subok: bool, необязательно.

numpy.zeros_like(a, dtype = None, order = 'K', subok = True

Если True, то вновь созданный массив будет использовать тип подкласса 'a', в противном случае это будет базовый классмассив. По умолчанию True.

Я предполагал, что все numy массивы были класса ndarray, и мне никогда не приходилось подробно рассматривать подкласс массива .В каких ситуациях я могу отказаться от использования того же подкласса, указать использование базового класса?

1 Ответ

0 голосов
/ 27 мая 2018

Что такое цель и утилита ...?

Цель:

Подпись-вызов помогает либо проходить через обработанный тип экземпляра, как показано здесь:

>>> np.array( np.mat( '1 2; 3 4' ),    # array-to-"process"
              subok = True             # FLAG True to ["pass-through"] the type
              )
matrix([[1, 2],
        [3, 4]])                       # RESULT is indeed the instance of matrix

Наоборот, если не желает "Повторно обработав "и .shape, и создав один и тот же класс, используя subok = False, полученный *_alike() не получит тот же класс, как" пример "процесса, который был дан для создания *_alike() -генерированный вывод:

type(                np.mat( '1 2;3 4' ) )   # <class 'numpy.matrixlib.defmatrix.matrix'>
type( np.array(      np.mat( '1 2;3 4' ) ) ) # <type 'numpy.ndarray'>
type( np.zeros_like( np.mat( '1 2;3 4' ) ) ) # <class 'numpy.matrixlib.defmatrix.matrix'>

>>> np.zeros_like(   np.mat( '1 2;3 4' ), subok = True  )
matrix([[0, 0],
        [0, 0]])
>>> np.zeros_like(   np.mat( '1 2;3 4' ), subok = False )
array([[0, 0],
       [0, 0]])

Утилита:

Эти subok -флаги распространены в других numpy функциях (не только *_like() -s, такжев np.array( ... )), для той же самой цели, поскольку она довольно полезна для интеллектуальных конструкций кода с модифицированным типом, где требуемый тип продукта известен «генерирующему» процессу, и результаты, таким образом, достигаются без чрезмерногосвязанные накладные расходы, если в противном случае потребовались последующие модификации.

...