2013-12-02 6 views
5

У меня есть список, который я хочу рассчитать среднюю (среднюю?) Значения для нее. Когда я делаю это:Как вычислить среднее значение в python?

import numpy as np #in the beginning of the code 

goodPix = ['96.7958', '97.4333', '96.7938', '96.2792', '97.2292'] 
PixAvg = np.mean(goodPix) 

Я получаю код ошибки:

ret = um.add.reduce(arr, axis=axis, dtype=dtype, out=out, keepdims=keepdims) 

TypeError: cannot perform reduce with flexible type

Я пытался найти помощь, но не нашли то, что было полезно

Спасибо всем.

ответ

9

Преобразование вы список из строк в np.float:

>>> gp = np.array(goodPix, np.float) 
>>> np.mean(gp) 
96.906260000000003 
+0

Хмм, я понял, что ваше решение может быть немного более питоническим, но почему на нем есть n +0? – usethedeathstar

+0

@alko Спасибо большое! работайте отлично! – shlomi

+0

@usethedeathstar: Я думаю, вы должны согласиться с тем, что, несмотря на ответ, люди не обязаны отвечать на все остальные ответы, которые являются правильными, но низшими. Если бы более высокий ответ Алько был здесь не уверен, возможно, некоторые из этих 7 человек вместо этого поддержали бы вас. –

2

Вещи все еще струны вместо поплавков. Попробуйте следующее:

goodPix = ['96.7958', '97.4333', '96.7938', '96.2792', '97.2292'] 
gp2 = [] 
for i in goodPix: 
    gp2.append(float(i)) 
numpy.mean(gp2) 
+0

я не могу догадаться, почему некоторые ответы получить мгновенно но это +8 для меня тоже загадка; как и для вашего ответа, это не плохо, но я сам не буду +1, поскольку это примерно в два раза медленнее, чем подход с numpy, и его можно переписать более коротко и яснее, чем 'np.mean ([float (i) for i in goodPix]) ' – alko

+0

true, но в два раза медленнее, чем метод numpy, я предполагаю, что это означает 2 наносекучки вместо 1 наносекунда? Если это медленно, не делайте это быстрее? – usethedeathstar

+0

@usethedeathstar Это зависит от длины списка. –

0

Использование списка понимание

>>> np.mean([float(n) for n in goodPix]) 
96.906260000000003 
0

Существует библиотека статистики, если вы используете питона> = 3.4

https://docs.python.org/3/library/statistics.html

Вы можете использовать его как средство. Допустим, у вас есть список номеров, из которых вы хотите найти среднее: -

list = [11, 13, 12, 15, 17] 
import statistics as s 
s.mean(list) 

Он имеет другие методы тоже как СТАНДОТКЛОН, дисперсии, режим и т.д.

Смежные вопросы