我必须在Python中找到列表的平均值.到目前为止这是我的代码
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l)
Run Code Online (Sandbox Code Playgroud)
我已经得到它所以它将列表中的值加在一起,但我不知道如何将它分成它们?
我mean将statistics模块的功能性能与简单的sum(l)/len(l)方法进行了比较,发现由于mean某种原因,该功能非常慢.我使用timeit下面的两个代码片段来比较它们,有没有人知道是什么原因导致执行速度的巨大差异?我正在使用Python 3.5.
from timeit import repeat
print(min(repeat('mean(l)',
'''from random import randint; from statistics import mean; \
l=[randint(0, 10000) for i in range(10000)]''', repeat=20, number=10)))
Run Code Online (Sandbox Code Playgroud)
上面的代码在我的机器上执行大约0.043秒.
from timeit import repeat
print(min(repeat('sum(l)/len(l)',
'''from random import randint; from statistics import mean; \
l=[randint(0, 10000) for i in range(10000)]''', repeat=20, number=10)))
Run Code Online (Sandbox Code Playgroud)
上面的代码在我的机器上执行大约0.000565秒.
我有一个列表,我想计算她的值的平均值(平均值?).当我这样做:
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)
Run Code Online (Sandbox Code Playgroud)
我收到此错误代码:
ret = um.add.reduce(arr, axis=axis, dtype=dtype, out=out, keepdims=keepdims)
Run Code Online (Sandbox Code Playgroud)
TypeError: cannot perform reduce with flexible type
我试图找到一些帮助,但没有找到有用的东西
谢谢你们.
我是python和信号处理的新手.我试图计算mean信号的某些频率范围内的值.
我想做的是如下:
import numpy as np
data = <my 1d signal>
lF = <lower frequency>
uF = <upper frequency>
ps = np.abs(np.fft.fft(data)) ** 2 #array of power spectrum
time_step = 1.0 / 2000.0
freqs = np.fft.fftfreq(data.size, time_step) # array of frequencies
idx = np.argsort(freqs) # sorting frequencies
sum = 0
c =0
for i in idx:
if (freqs[i] >= lF) and (freqs[i] <= uF) :
sum += ps[i]
c +=1
avgValue = sum/c
print 'mean value is=',avgValue
Run Code Online (Sandbox Code Playgroud)
我认为计算很好,但是对于超过15GB的数据并且处理时间呈指数增长需要花费很多时间.是否有任何最快的方式可以使我能够以最快的方式在某个频率范围内获得功率谱的平均值.提前致谢. …
脾气暴躁应该很快。但是,将Numpy ufuncs与标准Python函数进行比较时,我发现后者要快得多。
例如,
aa = np.arange(1000000, dtype = float)
%timeit np.mean(aa) # 1000 loops, best of 3: 1.15 ms per loop
%timeit aa.mean # 10000000 loops, best of 3: 69.5 ns per loop
Run Code Online (Sandbox Code Playgroud)
使用其他Numpy函数(例如max,power)也得到了类似的结果。我给人的印象是Numpy的开销使得小型阵列的速度较慢,而大型阵列的速度会更快。在上面的代码中,aa并不小:它有100万个元素。我想念什么吗?
当然,Numpy速度很快,只是功能似乎很慢:
bb = range(1000000)
%timeit mean(bb) # 1 loops, best of 3: 551 ms per loop
%timeit mean(list(bb)) # 10 loops, best of 3: 136 ms per loop
Run Code Online (Sandbox Code Playgroud) 我没有在此作业上寻求帮助。我已经完成了前三部分;我仅在此处发布整个问题以帮助澄清。我只是对第4部分感到困惑(如下所述);我不确定请求的是什么,并且想知道是否有人可以解释“助手功能”的含义以及我应该编写的内容。谢谢。
入学标准基于SAT的三个部分的分数,并在高中毕业班上排名;确切的标准在下面给出。这些规则以此处显示的优先级顺序(1、2、3等)应用。
如果输入数据无效(SAT小于200或大于800,或等级等级不是正整数),则将其拒绝。
如果任何测试分数为800,则接受该输入数据;
如果任何测试分数低于300,
如果他们的平均考试分数大于650,并且班级分数小于或等于25,则他们被接受。
如果两个或多个测试分数小于400或班级分数大于或等于75,则将其拒绝。
在任何其他情况下,申请人都将被置于等待名单Da程序上,以替换电子表格(具有多个功能),以确定学生是否会被接受,拒绝或等待名单。您的解决方案必须包含以下功能:
第1部分:
调用一个函数admissionStatus(sat_math,sat_reading,sat_writing,class_rank),该函数接受4个参数(如图所示)并返回字符串“ Accept”,“ Reject”或“ Waitlist”?
第2部分:
isvalid(sat_math,sat_reading,sat_writing,class_rank)根据输入数据是否有效,称为的函数返回True或False。如果所有数据均有效,则返回True,否则返回False。?
第3部分:
一个主要功能,提示用户输入相关数据(申请人姓名,数学SAT分数,阅读SAT分数,编写SAT分数和班级排名。它还调用admissionStatus()传递适当的参数。
第4部分:
您认为合适的任何其他辅助函数(将某些状态的计算作为可以从接纳状态调用的单独函数来实现在接纳状态中。例如,您可能想为上面的规则2编写一个函数)。
再一次,我只问第4部分。我是否应该为每个标准编写一个函数?我真的不确定。