如何在python中使用numpy对代码进行矢量化?
我需要使用矢量化来规范化代码。 没有矢量化的完整代码如下所示:如何在python中使用numpy对代码进行矢量化?,python,numpy,Python,Numpy,我需要使用矢量化来规范化代码。 没有矢量化的完整代码如下所示: width = 1024 height = 429 fov = 24.0 origin = (0, 0, -fov / 36.0) start = numpy.zeros((height, width, 3)) norm = numpy.empty((height, width, 3)) for v in range(height): for u in range(width): lensqr = 0.0
width = 1024
height = 429
fov = 24.0
origin = (0, 0, -fov / 36.0)
start = numpy.zeros((height, width, 3))
norm = numpy.empty((height, width, 3))
for v in range(height):
for u in range(width):
lensqr = 0.0
for d in range(3): # 3 dimensions
norm[v, u, d] = start[v, u, d] - origin[d]
lensqr += norm[v, u, d]**2
length = numpy.sqrt(lensqr)
for d in range(3):
norm[v, u, d] /= length
也需要一定的条件
我们需要使用
length = numpy.sqrt(numpy.square(direction).sum())
其中方向=起点-原点
此外,我们还需要使用axis关键字of sum()对长度计算进行矢量化。这应该与您的代码以矢量化方式进行的操作相同:
import numpy as np
width = 1024
height = 429
fov = 24.0
origin = (0, 0, -fov / 36.0)
origin_tiled = np.tile(origin, (height, width, 1))
start = np.zeros((height, width, 3))
norm = start - origin_tiled
lensqr = np.sum(norm**2, axis=2)
length = np.sqrt(lensqr)
norm = norm / length[ :, :,None]
我不知道你的问题的第二部分到底是什么意思,但是这应该让你开始了。你能添加一个代码应该做什么的描述吗?