如何在Python2中正确编写矢量化函数项

如何在Python2中正确编写矢量化函数项,python,python-2.7,python-3.x,iterable-unpacking,Python,Python 2.7,Python 3.x,Iterable Unpacking,所以我在网上找到了一些使用Python3进行优化的代码。修改后,它呈现了这样一个图 现在我使用的是Python2,*没有被处理。我相信问题在于Python迭代,但在遵循中建议的括号技巧时,我没有得到任何结果。以下是完整的代码: %matplotlib inline import matplotlib.pyplot as plt import pylab as pylab import autograd.numpy as np from mpl_toolkits.mplot3d import

所以我在网上找到了一些使用Python3进行优化的代码。修改后,它呈现了这样一个图

现在我使用的是Python2,
*
没有被处理。我相信问题在于Python迭代,但在遵循中建议的括号技巧时,我没有得到任何结果。以下是完整的代码:

%matplotlib inline

import matplotlib.pyplot as plt
import pylab as pylab
import autograd.numpy as np

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import LogNorm
from matplotlib import animation
from IPython.display import HTML

from autograd import elementwise_grad, value_and_grad
from scipy.optimize import minimize
from collections import defaultdict
from itertools import izip_longest
from functools import partial

f  = lambda x, y: 10*np.cos(1*x) * 15*np.sin(1/2*y) + 150
xmin, xmax, xstep = -4.5, 4.5, .2
ymin, ymax, ystep = -4.5, 4.5, .2

x, y = np.meshgrid(np.arange(xmin, xmax + xstep, xstep), np.arange(ymin, ymax + ystep, ystep))
z = f(x, y)

minima = np.array([np.pi, np.pi])
minima_ = minima.reshape(-1, 1)

fig = plt.figure(figsize=(8, 5))
ax = plt.axes(projection='3d', elev=50, azim=-50)
ax.plot_surface(x, y, z, norm=LogNorm(), rstride=1, cstride=1, 
                edgecolor='none', alpha=.8, cmap=plt.cm.jet)
ax.plot(*minima_, f(*minima_), 'o', markersize=4, color='w')

ax.set_xlabel('$x$')
ax.set_ylabel('$y$')
ax.set_zlabel('$z$')

ax.set_xlim((xmin, xmax))
ax.set_ylim((ymin, ymax))

plt.show()
以及错误消息:

  File "<ipython-input-5-3b03e44c1cac>", line 31
    ax.plot(*minima_, f(*minima_), 'o', markersize=4, color='w')
SyntaxError: only named arguments may follow *expression
文件“”,第31行
最大绘图(*最小值,f(*最小值),'o',标记大小=4,颜色为'w')
SyntaxError:只有命名参数可以跟在*表达式后面
考虑按索引分配两个最小值。以下内容在python 2和python 3中都是兼容的:

a,b = minima_[0], minima_[1]                        # TO ADD
ax.plot(a,b, f(a,b), 'o', markersize=4, color='w')  # TO REPLACE

什么是z?请确保您的代码在干净的环境中运行。@Parfait笔记本的一个特点是很容易忘记单元格。。。我现在编辑OP+1和绿色swoosh标志作为您的答案!