我看到有人试图使用python和numpy进行模拟。但是,它安静得很慢。我读了他的代码后发现,他在处理数组/矩阵计算时只使用了numpy包,其他所有变量和代码都在python主控制台中定义(即for循环)。
我的问题是:
是否需要将所有变量都写为numpy变量(例如np.float)才能获得numpy软件包的全部功能?
另外,据我了解,python的for循环非常安静。但是我不想为了简单和易读而使用cython。 numpy是否可以使用一些特殊的迭代过程来加快计算速度?我看到了一个看起来像它但不太了解的页面(https://docs.scipy.org/doc/numpy/reference/arrays.nditer.html)。基本上,如何利用numpy软件包的全部功能?
答案 0 :(得分:1)
由于您未提供程序的详细信息,因此我假设您想知道numpy.ndarray是否比使用常规python循环更快。
是的,它要快得多。
这称为向量化。之所以更快,是因为:
也就是说,这还取决于您要如何处理。如果要执行数学/矩阵运算,则矢量化还可以提供更好的可读性(因为它看起来仅与方程式相似),并且可以提高运算能力,因为运算主要是数字运算。如果这些运算不是数值运算,那么您得到的提升会更少,因此可以使用python方式实现。