numpy.mean при изменении размера строки

Функция numpy mean отлично работает, когда размеры одинаковы.

a = np.array([[1, 2], [3, 4]]) a.mean(axis=1) array([ 1.5, 3.5]) 

Но если я делаю это с изменением размера строки, он дает ошибку

 a = np.array([[1, 2], [3, 4, 5]]) a.mean(axis=1) IndexError: tuple index out of range 

Я не могу найти что-либо в документации по этой проблеме. Я мог бы рассчитать значение самого себя, но я хотел бы использовать функцию построения для этого, видя, что это должно быть возможно.

    One Solution collect form web for “numpy.mean при изменении размера строки”

    Вот такой подход –

     # Store length of each subarray lens = np.array(map(len,a)) # Generate IDs based on the lengths IDs = np.repeat(np.arange(len(lens)),lens) # Use IDs to do bin-based summing of a elems and divide by subarray lengths out = np.bincount(IDs,np.concatenate(a))/lens 

    Пример прогона –

     In [34]: a # Input array Out[34]: array([[1, 2], [3, 4, 5]], dtype=object) In [35]: lens = np.array(map(len,a)) ...: IDs = np.repeat(np.arange(len(lens)),lens) ...: out = np.bincount(IDs,np.concatenate(a))/lens ...: In [36]: out # Average output Out[36]: array([ 1.5, 4. ]) 

    Простой альтернативный способ использования списка –

     In [38]: [np.mean(i) for i in a] Out[38]: [1.5, 4.0] 
    Python - лучший язык программирования в мире.