Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 3.x 为什么linalg.norm比一维numpy阵列的平方和快,而不是二维阵列?_Python 3.x_Numpy - Fatal编程技术网

Python 3.x 为什么linalg.norm比一维numpy阵列的平方和快,而不是二维阵列?

Python 3.x 为什么linalg.norm比一维numpy阵列的平方和快,而不是二维阵列?,python-3.x,numpy,Python 3.x,Numpy,好的,这可能有点深奥,但我正在研究numpy.linalg.norm(X)与numpy.sqrt(numpy.sum(X**2))的相对优点 当我在这两个函数中加入一个n*d矩阵并沿一个轴计算一组平方和时,我惊讶地发现sqrt/sum/**组合的工作速度(非常轻微)比linalg.norm()快。 然而,我在随后的测试中发现,在单个数组上进行平方和运算时,linalg.norm()的速度要快得多 下面是一些测试代码和输出(我使用一个定制的timeit()函数;不用担心): 和输出: 100*10

好的,这可能有点深奥,但我正在研究numpy.linalg.norm(X)与numpy.sqrt(numpy.sum(X**2))的相对优点

当我在这两个函数中加入一个n*d矩阵并沿一个轴计算一组平方和时,我惊讶地发现sqrt/sum/**组合的工作速度(非常轻微)比linalg.norm()快。 然而,我在随后的测试中发现,在单个数组上进行平方和运算时,linalg.norm()的速度要快得多

下面是一些测试代码和输出(我使用一个定制的timeit()函数;不用担心):

和输出:

100*1000, 100 loops
linalg 0:00:00.484933
sumosq 0:00:00.482585
100, 10000 loops
linalg 0:00:00.332493
sumosq 0:00:00.394401

这种模式每次都被复制。为什么linalg.norm在矩阵上的效率相对低于数组?

其中
norm
更快,它使用
sqrt(点(x,x))
。当它乘以相同的次数时,它在
sqrt(和(x*x,轴=1))方法上使用一个变量。使用
方法调整
和尺寸更困难。
100*1000, 100 loops
linalg 0:00:00.484933
sumosq 0:00:00.482585
100, 10000 loops
linalg 0:00:00.332493
sumosq 0:00:00.394401