![](/img/trans.png)
[英]SyntaxError: only named arguments may follow *expression - How to do in Python 2
[英]swap axes in 3d wirefram plot (matplotlib) due to SyntaxError: only named arguments may follow *expression
我使用的是Python 3.4.3,無法升級系統。 我的問題是我想使用matplotlib
和mpl_toolkits.mplot3d
生成3d線框圖
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)
,但這當然會在具有扭曲軸的圖中產生。
我的問題:是否可以從線框圖(eq 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)
如何使用itertools.chain
b
鏈連接到a
並將它們itertools.chain
成a
itertools.chain
:
from itertools import chain
ax.plot_wireframe(*chain(a, (b,)), rstride=1, cstride=2)
如果a
是一個列表或元組,那么您當然可以在將b
放入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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.