numpy.ma.average#

ma.среднее(a, axis=None, weights=None, returned=False, *, keepdims= значение>)[источник]#

Возвращает взвешенное среднее массива по заданной оси.

Параметры:
aarray_like

Данные для усреднения. Маскированные записи не учитываются в вычислениях.

осьNone или int или кортеж ints, опционально

Ось или оси, по которым производится усреднение a. По умолчанию, axis=None, будет усреднять по всем элементам входного массива. Если axis является кортежем целых чисел, усреднение выполняется по всем осям, указанным в кортеже, вместо одной оси или всех осей, как раньше.

весаarray_like, необязательный

Массив весов, связанных со значениями в a. Каждое значение в a вносит вклад в среднее значение в соответствии с его связанным весом. Массив весов должен иметь ту же форму, что и a если ось не указана, в противном случае веса должны иметь размерности и форму, согласующиеся с a вдоль указанной оси. Если weights=None, тогда все данные в a предполагаются имеющими вес, равный единице. Расчёт:

avg = sum(a * weights) / sum(weights)

где сумма берется по всем включенным элементам. Единственное ограничение на значения веса заключается в том, что sum(weights) не должен быть 0.

возвращёнbool, необязательно

Флаг, указывающий, является ли кортеж (result, sum of weights) должен возвращаться как вывод (True) или только результат (False). По умолчанию False.

keepdimsbool, необязательно

Если установлено значение True, оси, которые были сокращены, остаются в результате как измерения с размером один. С этой опцией результат будет корректно транслироваться против исходного a. Примечание: keepdims не будет работать с экземплярами numpy.matrix или других классов, методы которых не поддерживают keepdims.

Новое в версии 1.23.0.

Возвращает:
среднее, [sum_of_weights](кортеж) скаляра или MaskedArray

Среднее значение вдоль указанной оси. Когда возвращается True, верните кортеж со средним значением в качестве первого элемента и суммой весов в качестве второго элемента. Тип возвращаемого значения np.float64 if a имеет целочисленный тип и числа с плавающей точкой меньше чем float64, или входной тип данных, в противном случае. Если возвращается, sum_of_weights всегда float64.

Вызывает:
ZeroDivisionError

Когда все веса вдоль оси равны нулю. См. numpy.ma.average для версии, устойчивой к этому типу ошибки.

TypeError

Когда веса не имеет той же формы, что и a, и axis=None.

ValueError

Когда веса не имеет размерностей и формы, согласованных с a вдоль указанных ось.

Примеры

>>> import numpy as np
>>> a = np.ma.array([1., 2., 3., 4.], mask=[False, False, True, True])
>>> np.ma.average(a, weights=[3, 1, 0, 0])
1.25
>>> x = np.ma.arange(6.).reshape(3, 2)
>>> x
masked_array(
  data=[[0., 1.],
        [2., 3.],
        [4., 5.]],
  mask=False,
  fill_value=1e+20)
>>> data = np.arange(8).reshape((2, 2, 2))
>>> data
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> np.ma.average(data, axis=(0, 1), weights=[[1./4, 3./4], [1., 1./2]])
masked_array(data=[3.4, 4.4],
         mask=[False, False],
   fill_value=1e+20)
>>> np.ma.average(data, axis=0, weights=[[1./4, 3./4], [1., 1./2]])
Traceback (most recent call last):
    ...
ValueError: Shape of weights must be consistent
with shape of a along specified axis.
>>> avg, sumweights = np.ma.average(x, axis=0, weights=[1, 2, 3],
...                                 returned=True)
>>> avg
masked_array(data=[2.6666666666666665, 3.6666666666666665],
             mask=[False, False],
       fill_value=1e+20)

С keepdims=True, следующий результат имеет форму (3, 1).

>>> np.ma.average(x, axis=1, keepdims=True)
masked_array(
  data=[[0.5],
        [2.5],
        [4.5]],
  mask=False,
  fill_value=1e+20)