【问题标题】:Iterating over a ndarray by taking current and next row通过获取当前行和下一行来迭代 ndarray
【发布时间】:2021-02-19 14:12:11
【问题描述】:

假设我有一个 ndarray 列 a,b,c,d,e,f,g,h,i,j

[[1,2,3,4,5,6,7,8,9,10],
[11,22,33,44,55,66,77,88,99,100],
[111,222,333,444,55,666,777,888,999,1000],
...............................,
.............................]

我想迭代地取一行和下一行,并为两个连续的行计算一些具有相同列值的操作。 例子, 我必须采取第 i 行和第 i+1 行 然后迭代这些行的每个值,例如(1-11)和(2-22)............一步 在下一步中,我必须采取接下来的两行,例如(11-111)和(22-222)......作为下一步。 最终目标是拥有一个包含所有这些值的矩阵。 我该怎么做?

【问题讨论】:

    标签: python arrays multidimensional-array numpy-ndarray


    【解决方案1】:

    假设我们有:

    test = [[1,2,3,4,5,6,7,8,9,10],[11,22,33,44,55,66,77,88,99,100],[111,222,333,444,555,666,777,888,999,1000],[1111,2222,3333,4444,5555,6666,7777,8888,9999,10000]]
    

    test 也可以是np.ndarray。然后你可以像这样执行你想做的事情:

    for i in range(len(test) - 1):
        print(f"Iteration number {i}")
        for (value1, value2) in zip(test[i], test[i + 1]):
            print(value1, value2)
    

    这会导致:

    Iteration number 0
             1 11
             2 22
             3 33
             4 44
             5 55
             6 66
             7 77
             8 88
             9 99
             10 100
    Iteration number 1
             11 111
             22 222
             33 333
             44 444
             55 555
             66 666
             77 777
             88 888
             99 999
             100 1000
    Iteration number 2
             111 1111
             222 2222
             333 3333
             444 4444
             555 5555
             666 6666
             777 7777
             888 8888
             999 9999
             1000 10000
    

    【讨论】:

    • 对于第一个用第二个,然后第一个用第三个,........,然后第二个用第三个,第二个和第四个......我们能做什么?
    • test = [[1,2,3,4,5,6,7,8,9,10],[11,22,33,44,55,66,77,88,99,100],[111,222,333,444,555,666,777,888,999,1000],[1111,2222,3333,4444,5555,6666,7777,8888,9999,10000]] for i in range(len(test) - 1):print(f"Iteration number {i}") for j in range(i+1, len(test)-1): for (value1, value2) in zip(test[i], test[j]): print(value1, value2)
    • 您的示例中的“第一”/“第二”是什么?第一排?柱子?请添加一个小示例来展示您想要达到的预期结果
    • 第一次迭代第一行和第二行元素操作 1=> 11,2=>22,........ 在第二次迭代第一行和第三行同样,我提到的代码为此工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多