我有包含坐標的 3xN 維陣列([x1,x2,...xN],[y1,y2,...yN],[z1,z2,...zN]),我需要將其重塑為 Nx3 維坐標陣列([x1,y1,z1],[x2,y2,z2],...,[xN,yN,zN])。我嘗試了以下方法:
n=int(1e7)
x=np.linspace(0,1,n)
y=np.linspace(0,1,n)
z=np.linspace(0,1,n)
pos=np.array([x,y,z])
newpos=np.array(list(zip(pos[0],pos[1],pos[2])))
上面代碼的問題在于它的目的很慢。不僅如此,在使用n=1e7代碼時會遇到記憶體錯誤。有沒有其他方法可以達到預期的目的?
uj5u.com熱心網友回復:
用一個小的測驗和展示這個程序n:
In [9]: n = 5
In [10]: x=np.linspace(0,1,n)
...: y=np.linspace(0,1,n)
...: z=np.linspace(0,1,n)
...: pos=np.array([x,y,z])
In [11]: pos
Out[11]:
array([[0. , 0.25, 0.5 , 0.75, 1. ],
[0. , 0.25, 0.5 , 0.75, 1. ],
[0. , 0.25, 0.5 , 0.75, 1. ]])
In [12]: newpos=np.array(list(zip(pos[0],pos[1],pos[2])))
In [13]: newpos
Out[13]:
array([[0. , 0. , 0. ],
[0.25, 0.25, 0.25],
[0.5 , 0.5 , 0.5 ],
[0.75, 0.75, 0.75],
[1. , 1. , 1. ]])
In [14]: pos.T
Out[14]:
array([[0. , 0. , 0. ],
[0.25, 0.25, 0.25],
[0.5 , 0.5 , 0.5 ],
[0.75, 0.75, 0.75],
[1. , 1. , 1. ]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/322036.html
上一篇:OpenCV:僅回傳影像的選定區域并將其余部分回傳為黑色
下一篇:一個區間內的多個最大值
