您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

映射python2与python3

5b51 2022/1/14 8:21:49 python 字数 2716 阅读 522 来源 www.jb51.cc/python

我是初学python用户,我在python2.7和python3.4.3上运行了以下代码import matplotlib.pyplot as plt import numpy as np import scipy.stats as stats alpha = 1 n = 100 u = stats.uniform(0,1) F_inverse = la

概述

我是初学python用户,我在python2.7和python3.4.3上运行了以下代码

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

alpha = 1
n = 100

u = 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一起使用?

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所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶