Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用numpy对代码进行矢量化?_Python_Numpy - Fatal编程技术网

如何在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]

我不知道你的问题的第二部分到底是什么意思,但是这应该让你开始了。

你能添加一个代码应该做什么的描述吗?