如何有效地逐行迭代一系列numpy数组?

时间:2017-12-25 19:22:15

标签: python arrays performance numpy dataset

我有一个很大的列表列表,我正在转换为一个numpy数组,然后迭代,像这样:

a = [ [0,1,2], [3,4,5], [6,7,8] ]
np_a = np.array(a)

for i in np_a:
    print i # prints [0,1,2], then [3,4,5], then [6,7,8] as expected
    # do a bunch of stuff to each row

当然这有效,但由于我正在处理大量数据,这可能需要一分钟才能运行。我一直在研究加速这段代码的各种方法,首要的建议是对我在循环中执行的操作进行矢量化。然而,这些操作对于矢量化并不是一件容易的事情(想想一堆点积和变换等等在每一行......)。我发现的一种方法是使用np.nditer方法,如下所示:

a = [ [0,1,2], [3,4,5], [6,7,8] ]
np_a = np.array(a)

for i in np.nditer(np_a):
    print i # prints 0, then 1, then 2, etc...
    # do a bunch of stuff to each rowon 

但这似乎将阵列变为一维列表。我已经非常广泛地查看了文档,并且没有找到我在这里寻找的内容:https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.nditer.html#iterating-as-a-specific-data-type

有没有人有任何关于如何使这项工作的具体建议,正如我期望的那样,使用np.nditer,或者某种其他实现方式比“方法中的r”更有效?

0 个答案:

没有答案