0

我在 Python 3.4.3 上,无法升级系统。我的问题是我想使用matplotlib和生成 3d 线框图mpl_toolkits.mplot3d

ax.plot_wireframe(*a,b, rstride=1, cstride=2)
>> SyntaxError: only named arguments may follow *expression

这个问题我得到,之前的 Python 3.5 星号表达式只允许作为 exprlist 中的最后一项。

ax.plot_wireframe(b,*a, rstride=1, cstride=2)的工作,但这 - 当然 - 在一个带有扭曲轴的情节中产生。

我的问题:是否有可能从线框图中交换轴(eqax.plot_wireframe(Z,X,Y)代替(X,Y,Z),或者是否有另一种解决方法来解决我的拆包问题?

更多详细信息:

a = np.meshgrid(np.arange(ys.shape[0]),xs)
b = ys.T

print(ys.shape)
>>(448, 33)
print(ys.shape[0])
>>488
print(b.shape)
>>(33,448)
print(xs.shape)
>>(33,)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ 我能够通过给 Python 提供它想要的东西来规避这个问题,即命名参数。因此,该行现在显示为:

ax.plot_wireframe(*a,Z=b)
4

1 回答 1

1

链式 如何使用并将它们拆开成一个整体baitertools.chain

from itertools import chain

ax.plot_wireframe(*chain(a, (b,)), rstride=1, cstride=2)

如果a是列表或元组,您当然可以在放入类型b容器后简单地使用加法。 a


演示:

>>> a = [1,2,3]
>>> b = 4
>>> print(*a, b)
  File "<stdin>", line 1
SyntaxError: only named arguments may follow *expression
>>> print(b, *a)
4 1 2 3
>>> print(*chain(a, (b,)))
1 2 3 4
于 2016-11-21T20:19:29.683 回答