我在Python 3.4.3上无法升级系统。
我的问题是我想使用matplotlib
和mpl_toolkits.mplot3d
ax.plot_wireframe(*a,b, rstride=1, cstride=2)
>> SyntaxError: only named arguments may follow *expression
从this question我得到的是,之前的Python 3.5一个已加星标的表达式只允许作为exprlist中的最后一项。
做ax.plot_wireframe(b,*a, rstride=1, cstride=2)
有效,但当然 - 这会产生扭曲轴的情节。
我的问题:
是否有可能从wirefram图中交换轴(e.q。ax.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)
答案 0 :(得分:1)
使用itertools.chain
链 b
与a
的关系怎么样,并将它们打包成一个部分:
from itertools import chain
ax.plot_wireframe(*chain(a, (b,)), rstride=1, cstride=2)
如果a
是列表或元组,您当然可以在将b
放入 type 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