|
|
1
1
把这作为一个半完整的答案来回答你的两点——使代码更加“pythonic”和“efficient”。 有很多方法可以编写代码,而且在numpy代码和使用的纯python代码之间总是有一个平衡点。 这主要是因为体验了numpy,了解了一些更高级的特性、代码运行的速度以及个人偏好。 个人偏好是最重要的-你需要能够理解你的代码做什么和修改它。 别担心什么是蟒蛇,或者更糟的是-神经。 找到一种适合你的编码风格(就像你看起来做的那样),不要停止学习。 你会学到一些技巧(比如@b.m.的答案用法),但在大多数情况下,这些技巧应该保存下来,以备不时之需。 大多数技巧往往需要额外的工作,或只适用于某些情况。 这就引出了你问题的第二部分。 如何提高代码的效率。 第一步是建立基准。 真正地。 我很惊讶有这么多东西可以加速代码,而这些东西几乎没有改变它,甚至使它运行得更慢。 python的列表是高度优化的,在很多方面都有很好的性能(尽管stackoverflow上的许多用户仍然相信使用numpy可以神奇地使任何代码更快)。 为了解决特定的问题,在大多数情况下,混合列表和数组是很好的。尤其是如果
在你的代码中,案例2适用。诡计
|
|
2
0
混合列表和数组是非常必要的。只有数组原语才能有效地使用相同的数据:
只是个风景。新的数组可以通过
|
|
|
3
-1
添加到列表将很慢。尝试列表理解以生成numpy数组。 像下面这样的东西
这可能很奇怪,因为你有一个numpy数组。如果你想要一个三维数组,这是非常好的。如果不需要三维数组,则可能需要vstack或追加数组。
列表理解速度 我在Windows10上运行Python3.4.4。
输出
我对微观优化的帮助感到非常惊讶。不过,对于我的系统中的大列表,列表理解要快得多。 |