如何在2d网格上插入矢量

时间:2016-12-23 08:07:51

标签: python vectorization

我已经生成了一个长度为100的二维网格,我有一个元组向量,大约有2d点。

x1 = np.linspace(-1,1,10)
y1 = np.linspace(-1,1,10)
grid=[]
for i in x1:
    for j in y1:
        grid.append((i,j))

#The vector
vec=[(.033,-.22),(.5,-.9),(-.77,-.01),(.5,.2)]

我想要的是遍历网格的所有100个单元格以及在该坐标范围内存在向量元组的任何地方,我希望1反对它0。因此输出网格将有4个(对应于vec)& 96零。

**当我说网格的坐标范围我的意思是这样的: -

ctr=0
for i in x1:
    for j in y1:
        if ctr==0:
            temp=(i,j)
            ctr+=1
            continue
        else:
            print temp, "to" ,i,j
            temp=(i,j)
            ctr+=1

2 个答案:

答案 0 :(得分:3)

您是否需要稀疏表示或完整的输出? 您是否正在尝试将输出向量用于机器学习输入,因为"输出网格是一个特征向量" ?

也许试试这个(对于非常大的网格和矢量而言效率不高):

ctr=0
for v in vec:
    for i in x1:
        for j in y1:
            if ctr==0:
                temp=(i,j)
                ctr+=1
                continue
            else:
                #print temp, "to" ,i,j
                temp2=(i,j)
                if temp<=v<=temp2:
                    print 1,":", temp, temp2
                temp=(i,j)
                ctr+=1

答案 1 :(得分:1)

我建议使用python内置bisect模块来查找矢量在网格中的位置:

import numpy as np
from bisect import bisect

result = np.zeros(len(grid))
idx = [bisect(grid, x) for x in vec]
result[idx] = 1