gpt4 book ai didi

python - 列表理解或 map() 或 for 循环访问前一行来操作数组

转载 作者:行者123 更新时间:2023-11-28 16:31:44 26 4
gpt4 key购买 nike

假设我有一个数组(numpy 数组)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 循环,从而获得更快的速度(也许?)。有没有办法使用列表理解或 map 来做到这一点?我的 A 数组不必是零行的 nxn,除了第一行,它可以只是 A = [1, 2, 3, ..., n] 如果有办法的话创建一个 nx3 数组,使用 A 作为起始符,并继续获取前一行并将其连接 [m:][:m] . (任意米)

或者是的,也许 for 循环是执行此类操作的唯一/正确方法。我想知道是不是。

最佳答案

for 循环是最简单的方法,列表理解或映射不会获得太多速度。但是您可以使用 roll 而不是连接:

a = numpy.array([1, 2, 3])
a = numpy.vstack([numpy.roll(a, -i) for i in xrange(3)])

关于python - 列表理解或 map() 或 for 循环访问前一行来操作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com