[英]generate 2D numpy array containing tuples
我想生成一個填充了元組的2D numpy數組。 每個方塊表示一個像素,該像素與具有元組的另一個2D坐標相關。 我只知道幾對像素/元組。 所以我的數組必須插入這些點,並且必須在某種程度上是線性的。 我已經開始這樣做了:
rows, cols : nb of rows and columns that the 2D array should have
maxx, maxy : maximum of the x and y real coordinates. Their range is [0:maxx] and [0:maxy]
interpolation = [((row1,col1),(x1,y1)),((row2,col2),(x2,y2))]
X = (rows-1-np.mgrid[0:rows,0:cols][0])/(rows-1)*maxx
Y = np.mgrid[0:rows,0:cols][1]/(cols-1)*maxy
return np.vstack(([X.T], [Y.T])).T
但是網格中沒有元組,並且耦合不會正確地插入坐標。 實際上元組是網格上的圓心,就像這樣: 而且我知道所有圈子的真實坐標。 我的目標是擁有一個矩陣,其中包含圖像像素的所有實際坐標,以便制作一個3d掃描儀:-)有沒有人有想法? 謝謝 !
你真的想要tuples
,還是只需一個3d數組? 您可以使用'元組'作為元素制作一個二維數組,但這是一個結構化數組。 看起來更像你想要一個(rows, cols, 2)
形狀的數組?
整數師可能會咬你。
In [282]: rows, cols = 5.,6. # make float
In [283]: maxx, maxy = 80.,100.
In [284]: X = (rows-1-np.mgrid[0:rows,0:cols][0])/(rows-1)*maxx
In [285]: Y = np.mgrid[0:rows,0:cols][1]/(cols-1)*maxy
In [288]: np.vstack(([X.T],[Y.T]))
Out[288]:
array([[[ 80., 60., 40., 20., 0.],
[ 80., 60., 40., 20., 0.],
[ 80., 60., 40., 20., 0.],
[ 80., 60., 40., 20., 0.],
[ 80., 60., 40., 20., 0.],
[ 80., 60., 40., 20., 0.]],
[[ 0., 0., 0., 0., 0.],
[ 20., 20., 20., 20., 20.],
[ 40., 40., 40., 40., 40.],
[ 60., 60., 60., 60., 60.],
[ 80., 80., 80., 80., 80.],
[ 100., 100., 100., 100., 100.]]])
我離開了決賽.T
因為(2,6,5)顯示更緊湊。 np.array([X,Y]).transpose([1,2,0])
應該和你的vstack
。
這是你想要的嗎?
mgrid
可以使用j
參數進行插值:
In [307]: Y,X=np.mgrid[0:100:6j,80:0:5j]
In [308]: np.array([X,Y])
np.linspace
也很方便。 再看看ogrid
和meshgrid
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.