簡體   English   中英

生成包含元組的2D numpy數組

[英]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

但是網格中沒有元組,並且耦合不會正確地插入坐標。 實際上元組是網格上的圓心,就像這樣: opencv的校准網格 而且我知道所有圈子的真實坐標。 我的目標是擁有一個矩陣,其中包含圖像像素的所有實際坐標,以便制作一個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也很方便。 再看看ogridmeshgrid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM