我是初学python用户,我在python2.7和python3.4.3上运行了以下代码
import matplotlib.pyplot as pltimport numpy as npimport scipy.stats as statsAlpha = 1n = 100u = stats.uniform(0,1)F_inverse = lambda u: 1/Alpha*np.log(1/(1-u))v = np.array(map(F_inverse,u.rvs(n)))print(v)fig,ax = plt.subplots(1,1)stats.probplot(v,(1,),dist='expon',plot=ax)plt.show()
在python2上我得到一个像这样的好数组:
array([ 2.29133808e+00,1.63236151e+00,6.77776227e-01,3.33668250e-01,1.77830890e+00,3.06193068e-01,2.10677775e+00,1.30525788e-01,2.97056775e-01,... 1.31463775e+00,1.41840428e-03,8.60594737e-01,1.80644880e-01])
在python3上,我得到这个:
array(
如果我改变了这个:
v = np.array(map(F_inverse,u.rvs(n)))
至
v = List(map(F_inverse,u.rvs(n)))
它在两者上工作正常,但我想要使用数组.
有没有办法让这个与np.array一起使用?最佳答案将地图对象转换为列表,然后将其传递给numpy.array.
v = np.array(List(map(F_inverse,u.rvs(n))))
或者使用List comprehension而不是map来创建列表而不是map对象:
v = np.array([F_inverse(x) for x in u.rvs(n)])
但是,你不需要使用地图或列表理解是不需要的;直接调用F_inverse就足够了,因为F_inverse使用向量化 *** 作:
v = F_inverse(u.rvs(n))
总结 以上是内存溢出为你收集整理的映射python2与python3全部内容,希望文章能够帮你解决映射python2与python3所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)