teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2019/02/14 09:13

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -14,7 +14,7 @@
14
14
  > np.set_printoptions [中略] としたら、できた
15
15
 
16
16
  フォーマット書式を省略した場合、オブジェクトの`__str__`メソッドが呼ばれます。
17
- set_printoptionsを用いれば、指示通りの書式で文字列化してくれるのです。
17
+ numpy.set_printoptionsを用いれば、**NumPy側で**指示通りの書式を適用してくれるのです。
18
18
 
19
19
  実験
20
20
  ---

2

追記

2019/02/14 09:13

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -14,4 +14,41 @@
14
14
  > np.set_printoptions [中略] としたら、できた
15
15
 
16
16
  フォーマット書式を省略した場合、オブジェクトの`__str__`メソッドが呼ばれます。
17
- set_printoptionsを用いれば、指示通りの書式で文字列化してくれるのです。
17
+ set_printoptionsを用いれば、指示通りの書式で文字列化してくれるのです。
18
+
19
+ 実験
20
+ ---
21
+ オレオレクラスで実験。
22
+ ```Python
23
+ class MyArray:
24
+ def __init__(self, lst):
25
+ self._lst = lst
26
+ self._format = '{:.5f}'
27
+
28
+ def set_precision(self, precision):
29
+ self._format = '{{:.{}f}}'.format(precision)
30
+
31
+ def __str__(self):
32
+ return ' '.join(
33
+ self._format.format(e) for e in self._lst
34
+ )
35
+
36
+
37
+ arr = MyArray([3.141592, 2.718281])
38
+ print('arr is {} !'.format(arr))
39
+
40
+ arr.set_precision(3)
41
+ print('arr is {} !'.format(arr))
42
+
43
+ print('arr is {:.2f} !'.format(arr))
44
+ ```
45
+
46
+ **実行結果** [Wandbox](https://wandbox.org/permlink/xDuai6VXu4fbFLpM)
47
+ ```
48
+ arr is 3.14159 2.71828 !
49
+ arr is 3.142 2.718 !
50
+ Traceback (most recent call last):
51
+ File "prog.py", line 21, in <module>
52
+ print('arr is {:.2f} !'.format(arr))
53
+ TypeError: unsupported format string passed to MyArray.__format__
54
+ ```

1

追記

2019/02/14 09:12

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -9,4 +9,9 @@
9
9
  Traceback (most recent call last):
10
10
  File "<stdin>", line 1, in <module>
11
11
  TypeError: unsupported format string passed to list.__format__
12
- ```
12
+ ```
13
+
14
+ > np.set_printoptions [中略] としたら、できた
15
+
16
+ フォーマット書式を省略した場合、オブジェクトの`__str__`メソッドが呼ばれます。
17
+ set_printoptionsを用いれば、指示通りの書式で文字列化してくれるのです。