1

約50列と複数行のコンマ区切りファイルがあるので、常に0である(つまり、その列のすべての値がゼロである)すべての列を削除する必要があります。

ファイルは次のコードで読み取られます。

with open('data.txt', 'rb') as f:
    reader.csv.reader(f, delimiter=',')
    for row in reader:
        print row


0 0.1 0.3 0.4 0
0 0.2 0.5 0.3 0
0 0.7 0.9 0.2 0

このメモリ構造から列(0)を正確に削除する方法。これを実現するために、別の一時的なcsvファイルへの再書き込みと再読み取りがない場合は、より良いでしょう。

4

1 に答える 1

1

すべての行を読み込み(すべての値をfloatにマッピング)、を使用して列に変換し、をzip(*rows)使用してゼロ以外の値を持つもののみを保持し、をany()使用して行に変換し直しますzip(*columns)

with open('data.txt', 'rb') as f:
    rows = list(map(float, row) for row in csv.reader(f, delimiter=','))

rows = zip(*[col for col in zip(*rows) if any(col)])

デモンストレーションとしての後者のステップ:

>>> rows = [[0, 0.1, 0.3, 0.4, 0], [0, 0.2, 0.5, 0.3, 0], [0, 0.7, 0.9, 0.2, 0]]
>>> zip(*[col for col in zip(*rows) if any(col)])
[(0.1, 0.3, 0.4), (0.2, 0.5, 0.3), (0.7, 0.9, 0.2)]
于 2013-03-25T15:17:51.880 に答える