2
我有一个相当大的数据集raw
,我最初选择这样的行:如何加速Numpy中的行选择?
raw = np.array(Some Matrix)
selected = [r for r in raw if r[1] == '20130525' and r[2] < 120000]
但这实在是太慢了,谁知道如何加快速度使用numpy的的内置的功能呢?
我有一个相当大的数据集raw
,我最初选择这样的行:如何加速Numpy中的行选择?
raw = np.array(Some Matrix)
selected = [r for r in raw if r[1] == '20130525' and r[2] < 120000]
但这实在是太慢了,谁知道如何加快速度使用numpy的的内置的功能呢?
这将是标准numpythonic方法:
selected = raw[(raw[:, 1] == '20130525') & (raw[:, 2] == 120000)]
但进程加快的可能会是微薄的,如果你有object
类型的数组,作为混合数据类型的建议。你究竟在干什么?你可以使用recarray吗?
它是'&'不是'&&'? – MrROY
我不知道为什么,但是这比我的'[r for r in raw if [1] =='xxx']''更慢' – MrROY
检查'raw.dtype'是什么。如果它是'object'类型的,那么你不应该以它应该被使用的方式来破坏你自己:用一个单一的通用数据类型的数组。另一种方法是至少让所有的列共享一个数据类型(即使用一个记录数组)。如果您提供有关阵列中的内容的更多信息,以及如何构建阵列,则可以重新采用您的方法,并为您提供所需的速度。 – Jaime