0

長さ N の float のリストvalsと、 と呼ばれる 0 と 1 の長さ N のリストがありますbits。2 つのリストを抽出したいと考えています。 の要素はvalsの 0 に対応しbits、残りの要素は の 1 に対応しますbits。私は現在やっています:

valsbits = zip(vals,bits)

els0 = [v for v,b in valsbits if b == 0]

els1 = [v for v,b in valsbits if b == 1]

しかし、もっと良い方法があるはずです。また、私は多くの異なるbitsベクトルに対してこれを行っているので、この操作全体を行う賢い方法があるかもしれません。

4

4 に答える 4

0
[val for idx, val in enumerate(values) if bits[idx]]

sに一致する値のサブセットを取得します1。2 つのサブセット (0 と 1) を含むリストを取得するには、次のように記述できます。

true_vals, false_vals = [[val for idx, val in enumerate(values) if bits[idx]==bit] for bit in [0, 1]]

また

true_vals, false_vals = [[val[0] for val in zip(values, bits) if val[1]==bit] for bit in [0, 1]]
于 2013-09-10T19:26:32.950 に答える