23333


割と量のある二次元配列に対して

[code]

    print data
    
[/code]

とした時に下記のように省略されるのですが、ファイルに書き出したいので全部出して欲しい時はどうすればよいですか？

[code]

    [[a,b,c ..., x,y,z]
    [a,b,c ..., x,y,z]
    ....,
    [a,b,c ..., x,y,z]
    [a,b,c ..., x,y,z]]
    
[/code]


CC BY-SA 4.0
2016-03-22T03:24:06.453
23332
2021-07-10T08:03:17.990
2021-07-10T08:03:17.990
3060
525
question
python
Python で 二次元配列を print すると結果が省略されるが、全て表示させたい


`print <python-object>`
としたときにPythonのリストオブジェクトや辞書オブジェクトのプログラムコードのように出力されているのは、「たまたま」です。人間が見やすいように整形しているので、長い場合は途中で省略されます。

データを完全な状態でファイルに保存する、つまりシリアライズする方法はいくつかあります。このとき、どのようなフォーマットでファイルに書き出したいかによって実装方法は異なります。単に、人間が見るだけれあれば（再利用しないのであれば）、シリアライズをちゃんと考えるよりも楽に解決できそうです。

人間が見やすければOKな出力（画面の横幅はきっと広い）:

[code]

    lines = []
    for r in data:
        lines.append(', '.join(r))
    print '\n'.join(lines)
    
[/code]

print風味でprintを使って出力(Pythonのリストの文法と一致させる):

[code]

    lines = []
    for r in data:
        lines.append('[' + ', '.join(r) + ']')
    print '[' + ',\n'.join(lines) + ']'
    
[/code]

csvで出力(一般的に再利用しやすい方法):

[code]

    import csv
    with open('file.csv', 'wt') as f:
        writer = csv.writer(f)
        writer.writerows(data)
    
    # csv.reader を使えば読み込みが出来ます
    
[/code]

pickleで出力(Pythonで再利用しやすい方法):

[code]

    import pickle
    # write
    with open('file.p', 'wb') as f:
        pickle.dump(data, f)
    
    # read
    with open('file.p', 'rb') as f:
        d2 = pickle.load(f)
    
[/code]


CC BY-SA 3.0
2016-03-22T03:55:41.627
23333
2016-03-22T03:55:41.627
806
23332
answer


これはnumpyですか？だとしたら

[code]

    import numpy as np
    np.set_printoptions(threshold=np.inf)
    
[/code]

と先頭でやれば全部表示されます。


CC BY-SA 3.0
2016-03-22T04:51:40.413
23336
2016-03-22T04:51:40.413
7837
23332
answer


pandasなら

[code]

    import pandas as pd
    pd.set_option('display.max_rows', 最大表示列数)
    pd.set_option('display.max_columns', 最大表示行数)
    
[/code]

なのでこの最大値を10000000くらいにしたら、表示が可能です


CC BY-SA 4.0
2020-06-09T19:02:13.877
67471
2020-06-09T22:03:20.897
2020-06-09T22:03:20.897
19110
40556
23332
answer