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

回答編集履歴

2

Update

2021/11/12 07:50

投稿

melian
melian

スコア21285

answer CHANGED
@@ -55,25 +55,47 @@
55
55
  ```
56
56
  ===== ここまで =====
57
57
 
58
+ 後々の事を考えると、固定長で確保するよりは `dtype` に `object` を指定する方が良いかもしれません。
59
+ ```python
60
+ #InitData = np.full((65,18),1)
61
+ #boardData = InitData.astype(str)
62
+
63
+ boardData = np.full((65,18), '', dtype=object)
64
+ ```
65
+
58
66
  **余談**
59
67
 
60
68
  pandas には [pandas.read_xml](https://pandas.pydata.org/docs/reference/api/pandas.read_xml.html) というメソッドがあるので、そちらを使うと良いかもしれません。
61
69
  ```python
62
70
  import pandas as pd
63
71
 
72
+ xfpath = 'data.xml'
73
+
64
- df = pd.read_xml('data.xml', xpath='board')
74
+ df = pd.read_xml(xfpath, xpath='board')
65
75
  df.fillna('', inplace=True)
66
76
 
67
77
  boardData = df.to_numpy(copy=True)
78
+ print(f'boardData:\n{boardData}\n')
68
- print(f' Type: {type(boardData)}')
79
+ print(f' Type: {type(boardData)}')
80
+ print(f' DataType: {type(boardData.dtype)}')
69
- print(f'Shape : {boardData.shape}')
81
+ print(f' Shape: {boardData.shape}')
70
82
 
71
83
  boardData[2][1] = boardData[2][1] * 5
72
- print(f'boardData[2][1]: {boardData[2][1]}')
84
+ print(f'\nboardData[2][1]: {boardData[2][1]}')
73
85
 
74
86
  _ = """
87
+ boardData:
88
+ [[1 'AKT53' 'K82' 'QT3' 'Q6' 'QJ7' 'T64' '976' 'J942' 98.0 'AJ93' 'A85'
89
+ 'T875' '642' 'Q75' 'KJ42' 'AK3' 'NONE' 'N']
90
+ [2 '87' '64' 'T52' 'AQ6532' 'QT965' 'AT8' 'J64' '87' 4.0 'J953' 'K9873'
91
+ 'J94' 'AKJ32' 'KQ72' 'AQ' 'KT' 'NS' 'E']
92
+ [3 'AKQJT98765432' '' '' '' '' 'AKQJT98765432' '' '' '' ''
93
+ 'AKQJT98765432' 'J94' '' '' '' 'AKQJT98765432' '' 'W']]
94
+
75
- Type: <class 'numpy.ndarray'>
95
+ Type: <class 'numpy.ndarray'>
96
+ DataType: <class 'numpy.dtype[object_]'>
76
- Shape : (3, 19)
97
+ Shape: (3, 19)
98
+
77
99
  boardData[2][1]: AKQJT98765432AKQJT98765432AKQJT98765432AKQJT98765432AKQJT98765432
78
100
  """
79
101
  ```

1

Update

2021/11/12 07:50

投稿

melian
melian

スコア21285

answer CHANGED
@@ -29,6 +29,9 @@
29
29
 
30
30
  ```
31
31
 
32
+ 以下の説明は間違いです。正しくは bsdfan さんのコメントをお読み下さい。
33
+
34
+ ===== ここから =====
32
35
  ちなみに、`numpy 1.21.4` ではデフォルトで `21` バイト確保されるので当該の問題は発生しません。
33
36
  ```python
34
37
  >>> import numpy as np
@@ -50,6 +53,7 @@
50
53
  >>> boardData[0][1]
51
54
  '012345678901234567890'
52
55
  ```
56
+ ===== ここまで =====
53
57
 
54
58
  **余談**
55
59
 
@@ -60,13 +64,16 @@
60
64
  df = pd.read_xml('data.xml', xpath='board')
61
65
  df.fillna('', inplace=True)
62
66
 
63
- print(df)
67
+ boardData = df.to_numpy(copy=True)
68
+ print(f' Type: {type(boardData)}')
69
+ print(f'Shape : {boardData.shape}')
64
70
 
65
- #
71
+ boardData[2][1] = boardData[2][1] * 5
66
- num ns nh nd nc es ... ws wh wd wc vul deal
72
+ print(f'boardData[2][1]: {boardData[2][1]}')
67
- 0 1 AKT53 K82 QT3 Q6 QJ7 ... 642 Q75 KJ42 AK3 NONE N
68
- 1 2 87 64 T52 AQ6532 QT965 ... AKJ32 KQ72 AQ KT NS E
69
- 2 3 AKQJT98765432 ... AKQJT98765432 W
70
73
 
74
+ _ = """
75
+ Type: <class 'numpy.ndarray'>
76
+ Shape : (3, 19)
77
+ boardData[2][1]: AKQJT98765432AKQJT98765432AKQJT98765432AKQJT98765432AKQJT98765432
71
- [3 rows x 19 columns]
78
+ """
72
79
  ```