Почему, когда Series передается функции exp () в Numpy, возвращается Series? - PullRequest
0 голосов
/ 02 января 2019

Если сама numpy не запрограммирована на возврат серии, когда ей передается серия, это очень запутанно. однако в документации по этой функции не упоминается, что она возвращает серию, когда ей передается серия.

Поймите, что я родом из Java, и я новичок в Python.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Механизм NumPy ufunc имеет встроенные хуки для настройки того, как объекты обрабатываются с помощью ufuncs.В этом конкретном случае numpy.exp ufunc вызывает метод Series * __array__, чтобы получить массив для работы, вычисляет экспоненту по массиву и затем вызывает __array_wrap__* SeriesМетод 1007 * в результирующем массиве для последующей его обработки.

__array__ - это то, как ufunc получает объект, с которым он умеет работать, а __array_wrap__ - как результат преобразуется обратно в серию.вместо массива.

Вы можете увидеть те же механизмы в действии, написав свой собственный класс с помощью этих методов:

In [9]: class ArrayWrapper(object):
   ...:     def __init__(self, arr):
   ...:         self.arr = arr
   ...:     def __repr__(self):
   ...:         return 'ArrayWrapper({!r})'.format(self.arr)
   ...:     def __array__(self):
   ...:         return self.arr
   ...:     def __array_wrap__(self, arr):
   ...:         return ArrayWrapper(arr)
   ...:     

In [10]: numpy.exp(ArrayWrapper(numpy.array([1, 2, 3])))
Out[10]: ArrayWrapper(array([ 2.71828183,  7.3890561 , 20.08553692]))
0 голосов
/ 02 января 2019

Разница между Series и объектом ndarray состоит в том, что объект Series позволяет вам определять свой собственный маркированный индекс и получать доступ к элементам Series, используя этот индекс, который может быть строками, числами с плавающей запятой, целыми числами и т. Д., Тогда как ndarrayОбъект имеет фиксированный индекс, начиная с 0. Недостатком является то, что Series примерно в 10 раз медленнее, чем ndarray.

Серия - это основной строительный блок панд.Серия представляет собой одномерный помеченный индексированный массив на основе NumPy ndarray.Как и массив, Series может содержать ноль или более значений любого отдельного типа данных.Серия может быть создана и инициализирована путем передачи либо скалярного значения, либо NumPy ndarray, списка Python, либо Python Dict в качестве параметра данных конструктора Series.
Для получения дополнительной информации см. pandas и массивы NumPy.объяснил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...