回答編集履歴
2
Update
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(
|
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'
|
79
|
+
print(f' Type: {type(boardData)}')
|
80
|
+
print(f' DataType: {type(boardData.dtype)}')
|
69
|
-
print(f'Shape
|
81
|
+
print(f' Shape: {boardData.shape}')
|
70
82
|
|
71
83
|
boardData[2][1] = boardData[2][1] * 5
|
72
|
-
print(f'
|
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
|
-
|
95
|
+
Type: <class 'numpy.ndarray'>
|
96
|
+
DataType: <class 'numpy.dtype[object_]'>
|
76
|
-
Shape
|
97
|
+
Shape: (3, 19)
|
98
|
+
|
77
99
|
boardData[2][1]: AKQJT98765432AKQJT98765432AKQJT98765432AKQJT98765432AKQJT98765432
|
78
100
|
"""
|
79
101
|
```
|
1
Update
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
|
-
|
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
|
-
|
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
|
-
|
78
|
+
"""
|
72
79
|
```
|