我已经生成了一个长度为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
答案 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