Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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 矢量化数组操作的源代码位置和解释_Python_Numpy - Fatal编程技术网

Python 矢量化数组操作的源代码位置和解释

Python 矢量化数组操作的源代码位置和解释,python,numpy,Python,Numpy,我正在尝试查找包含基本矢量化数组操作的NumPy.c文件。例如,我想知道当你做一些简单的事情,比如对数组进行标量加法,比如a+5,或者执行一个聚合,比如a.sum(),会运行哪段代码。我相信恩达拉的目标 我还想知道像BLAS或LAPACK这样的线性代数库是否涉及这些基本算术运算?代码是否像在C数组上迭代的for循环一样简单,或者有什么神奇的方法可以让计算机在没有for循环的情况下对连续数组执行基本操作?这些东西大部分都在C数组中。这是一个模板文件NumPy用来生成很多非常相似的C函数。不涉及BL

我正在尝试查找包含基本矢量化数组操作的NumPy
.c
文件。例如,我想知道当你做一些简单的事情,比如对数组进行标量加法,比如
a+5
,或者执行一个聚合,比如
a.sum()
,会运行哪段代码。我相信恩达拉的目标


我还想知道像BLAS或LAPACK这样的线性代数库是否涉及这些基本算术运算?代码是否像在C数组上迭代的for循环一样简单,或者有什么神奇的方法可以让计算机在没有for循环的情况下对连续数组执行基本操作?

这些东西大部分都在C数组中。这是一个模板文件NumPy用来生成很多非常相似的C函数。不涉及BLAS或LAPACK电话。

感谢您向我指出这一点。为了100%清楚,numpy使用“常规”for循环来做一些事情,比如向数组中添加标量并对它们进行求和?我想我很快就可以把它们结合在一起了。定义了sum数组方法,该方法调用。这使用了一个
NumericOps
变量。这就是我迷路的地方。似乎许多方法都是用
PyArray\u SetNumericOps
设置的,但我不知道该函数在哪里调用,也不知道它是如何链接到for循环的。@Tedperou:它不像您可能习惯的for循环那样规则,也不总是一个for循环,但大多数迭代都是用for循环完成的。对于
PyArray\u SetNumericOps
,这发生在
numpy.core.umath
模块的初始值设定项中。(在查找时,我发现实际上有一个
numpy.core.multiarray.set\u numeric\u ops
,它允许覆盖
umath
初始值设定项设置的默认值,因此如果你想发疯,可以重新定义ndarray的基本算术运算行为。)感谢您的帮助。我仍然不确定调用“reduce”操作的
PyArray\u SetNumericOps
的顺序被附加到
n\u操作。添加
,最后添加for循环,以完成
loops.c
中的操作。