我有形状的field
数组[高度宽度2]
我想让每个[i,j]的长度小于或等于1
我使用以下程序来做到这一点
def projectionOntoDisc(var):
res = np.zeros_like(var)
for i in xrange(var.shape[0]):
for j in xrange(var.shape[1]):
norm = max(1.0, np.linalg.norm(var[i, j]))
res[i, j] = var[i, j] / norm
return res
有没有办法更快地完成?
PS抱歉我的英语不好
答案 0 :(得分:4)
您可以对此操作进行矢量化,这样可以将执行速度提高几个数量级:
norm = numpy.fmax(1.0, numpy.linalg.norm(var, axis=2))
res = var / norm[:, :, numpy.newaxis]