filter,map并且reduce在Python 2中完美地工作.这是一个例子:
>>> def f(x):
return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def cube(x):
return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def add(x,y):
return x+y
>>> reduce(add, range(1, 11))
55
Run Code Online (Sandbox Code Playgroud)
但是在Python 3中,我收到以下输出:
>>> filter(f, range(2, 25))
<filter object at 0x0000000002C14908>
>>> map(cube, range(1, 11))
<map object at 0x0000000002C82B70> …Run Code Online (Sandbox Code Playgroud) 我是初学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()
Run Code Online (Sandbox Code Playgroud)
在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])
Run Code Online (Sandbox Code Playgroud)
在python3上,我得到这个:
array(<map object at 0x7f8aab6f3ef0>, dtype=object)
Run Code Online (Sandbox Code Playgroud)
如果我改变了这个:
v = np.array(map(F_inverse, u.rvs(n)))
Run Code Online (Sandbox Code Playgroud)
至
v = list(map(F_inverse, u.rvs(n)))
Run Code Online (Sandbox Code Playgroud)
它在两者上工作正常,但我想要使用数组.有没有办法让这个与np.array一起使用?