1

列の値aが 1 の場合、-1になるまでb列の値がコピーされます。ca

以下の例でaは、行 2 が 1 で、行 5 が -1 です。次に、列 (13) の 2 番目の値が列 2 から 5 にbコピーされます。c

row a   b   c
1   0  12   0
2   1  13  13
3   0  15  13
4   0   2  13
5  -1  19  13
6   0  34   0
7   0  11   0
8   1  23  23
9   0  14  23
10 -1   9  23
11  0  18   0
12  0  19   0

私は for ループでこれを行いましたが、この一連の操作を行うためのよりエレガントな方法が必要です (私は pandas、numpy を使用しています)。皆様のご協力に感謝いたします。

4

1 に答える 1

1

これはループを使用するソリューションですが、for非常に簡潔でありながら理解可能です。

にデータが保存さtableれていると仮定しています。as は常に (1, -1)* として表示され、0 が点在しています。atable[:,0]a

 starts = table[:,0] == 1
 ends = table[:,0] == -1
 for start, end in zip(starts.nonzero()[0], ends.nonzero()[0]):
     table[start:end+1,2] = table[start,1]

そのループを取り除くための素晴らしい方法があるに違いありませんが、何が起こっているのかを知るのは難しいと思います.

あなたが現在持っているものを投稿すれば、そこから行くのに役立つだろうということは、他のすべての人に同意します.

于 2012-05-30T02:23:52.990 に答える