python-列出comprehension或map()或for循环,用于访问上一行以操纵数组

假设我有一个array(numpy array)A = [[1、2、3],[0、0、0],[0、0、0]],我想将零行处理为[2、3, 1],[3、1、2],因此最终数组为A = [[1、2、3],[2、3、1],[3、1、2]]

我可以通过如下所示的for循环来做到这一点:

a = np.array([[1, 2, 3],[0, 0, 0],[0, 0, 0]])
for i in xrange(1,3):
    a[i]=np.concatenate([a[i-1][1:], a[i-1][:1]], axis=1)

转到上一行,将[1:]和[:1]连接起来,将结果分配为下一行.

我有许多这样的循环,我想知道是否可以摆脱for循环,从而提高速度(也许吗?).有什么办法可以使用列表推导或映射吗?我的A数组不必是nxn且行数为零,除了第一个,它可以只是A = [1,2,3,…,n],如果有一种方法可以使用A创建nx3数组作为开始,请继续使用上一行并将其[m:]和[:m]串联在一起. (任意米)

是的,也许for循环是执行此操作的唯一/正确方法.我想知道是否.

解决方法:

for循环是最简单的方法,列表理解或映射不会获得太大的速度.但是您可以使用roll代替串联:

a = numpy.array([1, 2, 3])
a = numpy.vstack([numpy.roll(a, -i) for i in xrange(3)])
上一篇:每天来自细菌计数的php输出循环


下一篇:Python:根据匹配项插入字典中的列表