首页 > 解决方案 > 如何在循环中保存迭代如下?

问题描述

我使用两个 for 循环来遍历两个数组。我已设置条件只打印符合我条件的内容。

中的各个位置在数组comb_x 和comb_y 中。这会导致 for 循环中的条件

这很好,可以正常工作。

这是我的代码

import os
import numpy as np
from itertools import combinations
    
    
a=np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])
b=np.array([0, 1, 2, 0, 1, 2, 0, 1, 2])
z1=np.array([1, 1])
z2=np.array([1, 1])
comb_x=np.array([0, 0, 1, 1])
comb_y=np.array([0, 1, 0, 1])
for (j), (k) in zip(a,b):
    z1[:]=0
    z1[:j]=1
    x12=z1
    z2[:]=0
    z2[:k]=1
    y12=z2  
    #print(x12,y12)
                    
    for (h),(n),(r) in zip(comb_x,comb_y,np.arange(0,4)):
        if x12[h]==1 and y12[n]==1:
            print('pravda',x12,y12)

我的输出按值对这些数字进行排序

我的输出:

[1 0] [1 0]
[1 0] [1 1]
[1 0] [1 1]
[1 1] [1 0]
[1 1] [1 0]
[1 1] [1 1]
[1 1] [1 1]
[1 1] [1 1]
[1 1] [1 1]

我需要它们在每次迭代中出现并跟随

所需输出

[1 0] [1 0]
[1 0] [1 1]
[1 1] [1 0]
[1 1] [1 1]
[1 0] [1 1]
[1 1] [1 1]
[1 1] [1 0]
[1 1] [1 1]
[1 1] [1 1]

为了更容易看到,我将在下面展示各个迭代及其结果应该是什么样子

第一次迭代:

[1 0] [1 0]
[1 0] [1 1]
[1 1] [1 0]
[1 1] [1 1]

第二次迭代:

[1 0] [1 1]
[1 1] [1 1]

第三次迭代:

[1 1] [1 0]
[1 1] [1 1]

第四次迭代:

[1 1] [1 1]

但正如你所看到的,它并没有通过迭代保存它们,而是按值升序对它们进行排序

是否可以根据迭代进行排列,使其仍然是一个numpy数组?

标签: pythonnumpyfor-loop

解决方案


推荐阅读