多次元配列を生成してNumpyに変換

多次元のリストをnumpy.ndarrayに変換する方法をまとめます。

九九の表をnumpy.ndarrayで得たいとしましょう。

その場合、numpy.ndarrayをfor文の中で生成するのではなく、最後に一括して変換を行います。

都度、変換してしまうととても遅くなります。

1
2
3
4
5
6
7
import numpy as np
table = [] # 空のリストを用意
for i in range(1,10):
row = [] # ループの度に、空のリストを用意
for j in range(1,10):
row.append(i*j) # 内側のリストに要素を追加
table.append(row) # 外側のリストに要素を追加
1
2
3
4
5
6
7
8
9
10
>>> table
[[1, 2, 3, 4, 5, 6, 7, 8, 9],
[2, 4, 6, 8, 10, 12, 14, 16, 18],
[3, 6, 9, 12, 15, 18, 21, 24, 27],
[4, 8, 12, 16, 20, 24, 28, 32, 36],
[5, 10, 15, 20, 25, 30, 35, 40, 45],
[6, 12, 18, 24, 30, 36, 42, 48, 54],
[7, 14, 21, 28, 35, 42, 49, 56, 63],
[8, 16, 24, 32, 40, 48, 56, 64, 72],
[9, 18, 27, 36, 45, 54, 63, 72, 81]]

変換を行う際はnp.array()としてあげるだけで大丈夫です。

1
2
3
4
5
6
7
8
9
10
11
>>> table = np.array(table)
>>> table
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9],
[ 2, 4, 6, 8, 10, 12, 14, 16, 18],
[ 3, 6, 9, 12, 15, 18, 21, 24, 27],
[ 4, 8, 12, 16, 20, 24, 28, 32, 36],
[ 5, 10, 15, 20, 25, 30, 35, 40, 45],
[ 6, 12, 18, 24, 30, 36, 42, 48, 54],
[ 7, 14, 21, 28, 35, 42, 49, 56, 63],
[ 8, 16, 24, 32, 40, 48, 56, 64, 72],
[ 9, 18, 27, 36, 45, 54, 63, 72, 81]])