回答編集履歴

2

説明追加

2021/01/07 09:15

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -53,3 +53,11 @@
53
53
  (array([0., 0., 0., 0., 0., 0., 0., 0., 0.]), 0., 0.)]
54
54
 
55
55
  ```
56
+
57
+
58
+
59
+ structured arrayはC言語の構造体配列のようなものというか、そのものです。
60
+
61
+ structured arrayの各要素は同じだけのバイト数でなければなりません。これはC言語と同じなので当然です。
62
+
63
+ C言語の構造体配列には可変長のメンバを指定することができなくて必要とあればポインタを入れておいてその先に可変長のデータを置く、というのと同じだと考えてください。

1

説明追加

2021/01/07 09:15

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -3,3 +3,53 @@
3
3
 
4
4
 
5
5
  dtypeをobjectにして、その先に別のものを入れることで実現します。
6
+
7
+
8
+
9
+ 例えばこんな感じです。
10
+
11
+
12
+
13
+ ```ここに言語を入力
14
+
15
+ >>> PLAIN = np.dtype([('points', object),
16
+
17
+ ... ('mean', np.float32),
18
+
19
+ ... ('cov', np.float32),
20
+
21
+ ... ],
22
+
23
+ ... align=True
24
+
25
+ ... )
26
+
27
+ >>>
28
+
29
+ >>> p = np.zeros(10, dtype=PLAIN)
30
+
31
+ >>>
32
+
33
+ >>> for i in range(10):
34
+
35
+ ... p[i]['points'] = np.zeros(i)
36
+
37
+ ...
38
+
39
+ >>> print(p)
40
+
41
+ [(array([], dtype=float64), 0., 0.) (array([0.]), 0., 0.)
42
+
43
+ (array([0., 0.]), 0., 0.) (array([0., 0., 0.]), 0., 0.)
44
+
45
+ (array([0., 0., 0., 0.]), 0., 0.) (array([0., 0., 0., 0., 0.]), 0., 0.)
46
+
47
+ (array([0., 0., 0., 0., 0., 0.]), 0., 0.)
48
+
49
+ (array([0., 0., 0., 0., 0., 0., 0.]), 0., 0.)
50
+
51
+ (array([0., 0., 0., 0., 0., 0., 0., 0.]), 0., 0.)
52
+
53
+ (array([0., 0., 0., 0., 0., 0., 0., 0., 0.]), 0., 0.)]
54
+
55
+ ```