numpy 如何每隔一遍反转子循环的索引顺序?

yks3o0rb  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(70)

我有一个二维数组(10x10),表示x和y位置。我正在写一个脚本,它会转到每个位置,做一些事情,然后移动到下一个位置。
最有效的方法是从一个角落开始,在恒定的x值处扫描(移动通过y值),然后在所有y值的末尾,移动通过一个x值并以相反的顺序移动通过y值。有点像蛇的图案,如果这有意义的话。
我的循环现在看起来像这样:

for x in x_values: 
     for y in y_values: 
          do_something()
          move to y + 1
     move to x + 1
     move back to first y value

字符串
正如您所看到的,我正在完成一列(在y中),前进一个x值,然后返回到第一个y值。我想对偶数的x值反向运行y值。
最简单的方法是什么?

lymnna71

lymnna711#

这应该能解决你的问题

for x in x_values:
    for y in y_values:
        do_something()
    y_values.reverse()

字符串
y_values上的每次迭代之后,y_values被反转。

wz1wpwve

wz1wpwve2#

为了实现每隔一遍反转子循环的索引顺序的预期行为,可以使用条件语句来检查当前x值是偶数还是奇数。如果是偶数,你可以按相反的顺序循环遍历y值;否则,正常循环遍历它们。下面是如何修改循环来实现这一点:

for x in range(len(x_values)):  # Assuming x_values is a list of x positions
    if x % 2 == 0:  # Check if x is even
        for y in reversed(y_values):  # Loop through y values in reverse order
            do_something(x_values[x], y)
            # Move to y + 1 (if needed)
    else:
        for y in y_values:  # Loop through y values normally
            do_something(x_values[x], y)
            # Move to y + 1 (if needed)
    # Move to x + 1 and reset to the first y value after completing each column

字符串
确保分别用x和y位置的实际列表替换x_valuesy_values。另外,根据您的具体实现调整do_something()函数。
这个修改将有效地创建您所描述的“蛇模式”,其中y值在每隔一次通过x值时以相反的顺序处理。

相关问题