在numpy数组的第二维上使用izip

时间:2010-11-30 03:58:44

标签: python numpy izip

我有以下内容:

for i in xrange(n):
    label = labels[i]
    frame = data[:, i]
    dostuff()

数据是2-D numpy数组。我想用izip重写它。

for label, frame in izip(labels, ???):
    dostuff()

如何更换???以使其生效?

2 个答案:

答案 0 :(得分:3)

如果您真的想使用izip(),可以这样做:

for label, frame in izip(labels, data.T):
    dostuff()

通常建议不要使用Python循环迭代NumPy数组,而是使用NumPy ufuncs在C代码中执行循环。如何做到这一点取决于dostuff()实际做了什么。

答案 1 :(得分:1)

您可以使用:

  ??? = numpy.transpose(data)

编辑:删除第二个版本。因为转置不像我想象的那样复制数组,所以没有理由像我一样疯狂。