59

たとえば、numpy 配列があります。

points = np.array([[-468.927,  -11.299,   76.271, -536.723],
                   [-429.379, -694.915, -214.689,  745.763],
                   [   0.,       0.,       0.,       0.   ]])

それを印刷するか、 str() を使用して文字列に変換すると、次のようになります。

print w_points
[[-468.927  -11.299   76.271 -536.723]
 [-429.379 -694.915 -214.689  745.763]
 [   0.       0.       0.       0.   ]]

2D 配列構造を維持しながらコンマで区切って出力する文字列に変換する必要があります。つまり、次のようになります。

[[-468.927,  -11.299,   76.271, -536.723],
 [-429.379, -694.915, -214.689,  745.763],
 [   0.,       0.,       0.,       0.   ]]

派手な配列をその形式の文字列に変換する簡単な方法を知っている人はいますか?

.tolist() がコンマを追加することは知っていますが、結果は 2D 構造を失います。

4

4 に答える 4

77

使ってみてrepr

>>> import numpy as np
>>> points = np.array([[-468.927,  -11.299,   76.271, -536.723],
...                    [-429.379, -694.915, -214.689,  745.763],
...                    [   0.,       0.,       0.,       0.   ]])
>>> print(repr(points))
array([[-468.927,  -11.299,   76.271, -536.723],
       [-429.379, -694.915, -214.689,  745.763],
       [   0.   ,    0.   ,    0.   ,    0.   ]])

大きなnumpy配列を使用する予定がある場合は、np.set_printoptions(threshold=np.nan)最初に設定してください。これがないと、約 1000 エントリの後で配列表現が切り捨てられます (デフォルト)。

>>> arr = np.arange(1001)
>>> print(repr(arr))
array([   0,    1,    2, ...,  998,  999, 1000])

もちろん、それほど大きな配列がある場合、これはあまり役に立たなくなり始め、おそらくデータを見るだけでなく何らかの方法でデータを分析する必要があり、ファイルに保存するよりもnumpy配列を永続化するより良い方法reprがあります...

于 2013-05-07T16:13:35.537 に答える
39

現在、numpy 1.11 には次のようなものがありますnumpy.array2string

In [279]: a = np.reshape(np.arange(25, dtype='int8'), (5, 5))

In [280]: print(np.array2string(a, separator=', '))
[[ 0,  1,  2,  3,  4],
 [ 5,  6,  7,  8,  9],
 [10, 11, 12, 13, 14],
 [15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24]]

@mgilsonとreprの比較 (「array()」と を表示dtype):

In [281]: print(repr(a))
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]], dtype=int8)

PSまだnp.set_printoptions(threshold=np.nan)大きな配列が必要です。

于 2017-01-12T13:51:28.437 に答える