2017-01-23 2 views
3

У меня есть этот массиврасчета в среднем без минимального значения, массив

hw_grades=array([[ 57, 77, 81, 99, 100], 
        [ 56, 57, 70, 77, 91], 
        [ 62, 74, 89, 99, 100], 
        [ 21, 42, 53, 61, 65], 
        [ 37, 40, 60, 65, 81], 
        [ 75, 88, 92, 95, 100]]) 

Я хочу, чтобы иметь возможность вернуться в среднем каждой строки без наименьшего значения (я уже использовал sort() и поэтому в основном я хочу, чтобы избавиться от первый элемент каждой строки, а затем сделать средний

def hw_grade_best(_array): 
    _array.sort() 
    _array[::][1:] 
    result = np.average(_array, axis=1) 
    return result 

не очень много кода и _array[::][1:] это ничего не делает, потому что я могу предположить, безусловно, я использую это неправильно

входа
hw_grade_best(hw_grades)

выхода я хочу

массива ([89,25, 73,75, 90,5, 55,25, 61,5, 93,75])

+0

@ Жан-FrançoisFabre он устранил первую строку – Enigma

ответ

2

Вам нужно разрезать массив, чтобы удалить значение, то вы можете применить среднюю функцию по оси:

hw_grades[:, 1:].mean(axis=1)

# array([ 89.25, 73.75, 90.5 , 55.25, 61.5 , 93.75])

0

Когда вы делаете:

_array[::][1:] 

вы делаете ничего, потому что это не изменяет массив, просто возвращает (нигде), что вы просили.

Вы должны присвоить возвращаемый массив как:

_array = _array[::][1:] 
result = np.average(_array, axis=1) 

или просто вычислить среднее значение непосредственно на нем:

result = np.average(_array[::][1:], axis=1) 
Смежные вопросы