我必须遍历整数的二维数组中的所有项目并更改值(根据某些规则,不重要)。Python:是多维数组超级缓慢的迭代吗?
我很惊讶python运行时和C#或java运行时间之间在性能上有什么显着差异。我写了完全错误的Python代码(v2.7.2)吗?
import numpy
a = numpy.ndarray((5000,5000), dtype = numpy.int32)
for x in numpy.nditer(a.T):
x = 123
>python -m timeit -n 2 -r 2 -s "import numpy; a = numpy.ndarray((5000,5000), dtype=numpy.int32)" "for x in numpy.nditer(a.T):" " x = 123"
2 loops, best of 2: 4.34 sec per loop
例如C#代码只执行50毫秒,即蟒较慢几乎100倍! (假设matrix
变量已经初始化)
for (y = 0; y < 5000; y++)
for (x = 0; x < 5000; x++)
matrix[y][x] = 123;
为什么你会惊讶于解释语言比JIT编译语言慢?你有没有试过用[PyPy](http://pypy.org/)代替CPython? – 2012-04-11 19:41:10
使用Numpy是为了避免显式的Python循环,并使用向量化的NumPy函数。 – 2012-04-11 19:42:04
@AdamRosenfield:PyPy还没有NumPy支持。 – 2012-04-11 19:43:01