有没有一种方法可以将一个操作矢量化,这个操作需要几个numpy数组并将它们放入字典列表中?在
下面是一个简化的例子。实际场景可能涉及更多数组和更多字典键。在
import numpy as np
x = np.arange(10)
y = np.arange(10, 20)
z = np.arange(100, 110)
print [dict(x=x[ii], y=y[ii], z=z[ii]) for ii in xrange(10)]
我在xrange
调用中可能有数千或数十万次迭代。创建x
、y
和{
我尝试过在函数中使用map
来创建dict和其他各种解决方法。Python for
循环似乎是慢的部分(与往常一样)。我有点坚持使用字典,因为有一个预先存在的API需求。然而,没有dicts和record数组或其他东西的解决方案会很有趣,但最终我不认为这将适用于现有的API。在
以你的小例子来说,我很难找到比列表和字典理解结合更快的东西
在分区之前使用数组连接来连接数组的替代方法速度较慢。在
^{pr2}$======================
结构化数组使用
recfunctions
最简单:时间要慢得多,但是如果您想一次访问所有的
x
值,这比从所有字典中获取它们要好得多。在生成具有给定名称的重新排列。速度差不多。在
我还可以构造一个具有正确数据类型和形状的空数组,并将数组复制到其中。这可能和这个一样快,但是描述起来更复杂。在
我建议优化数据结构以使用/访问,而不是构建速度。一般来说,一次构造,多次使用。在
==========
这是一个(Num)?Python道:
另外,请注意,如果您不需要同时使用所有的字典,您可以简单地创建一个生成器并按需访问每个条目。在
^{pr2}$如果您需要嵌套字典,我建议您使用列表理解:
下面是一种混合使用
NumPy
和Pandas
-样本运行-
^{pr2}$相关问题 更多 >
编程相关推荐