多次元配列したい(np.array

 1# 1次元配列
 2a = np.array([1, 2, 3])
 3# => array([1, 2, 3])
 4
 5# 2次元配列
 6a = np.array([
 7    [1, 2, 3],
 8    [4, 5, 6],
 9    ])
10# => array([[1, 2, 3],
11#           [4, 5, 6]])
12
13# 2次元配列(型を明示)
14a = np.array([
15    [1, 2, 3],
16    [4, 5, 6],
17    ],
18    dtype=np.float64)
19# => array([[1., 2., 3.],
20#           [4., 5., 6.]])

np.arrayでNumPy配列(numpy.ndarray型)を作成できます。 dtypeオプションで要素の型を指定できます。

dtypeにはPython標準のビルトイン型(intfloatcomplexboolstrbytesobject)が使えます。 精度を明示したい場合はNumPy型(np.int64np.float64np.complex128など)を使います。

注釈

NumPyのベクトル演算を有効利用するためには、 NumPy配列の要素の型(dtype)を揃えることが重要です。

異なる型を混在させると dtype=object となり、 Pythonのリストと同じような動作になりますが、 演算速度は遅くなります。

型を混在させたい場合は、 素直にPythonのリストを使えばよいです。

リストから多次元配列したい

1# 1次元配列
2seq = [1, 2, 3, 4]
3a = np.array(seq)
4
5# 2次元配列
6seq = [[1, 2, 3], [4, 5, 6]]
7a = np.array(seq)

タプルから多次元配列したい

1# 1次元配列
2seq = (1, 2, 3, 4)
3a = np.array(seq)
4
5# 2次元配列
6seq = ((1, 2, 3), (4, 5, 6))
7a = np.array(seq)

辞書から多次元配列したい

 1d = {"a": 1, "b": 2, "c": 3}
 2
 3# 値を変換
 4a = np.array(list(d.values()))
 5
 6# キーを変換
 7a = np.array(list(d.keys()), dtype=object)
 8
 9# キーと値を変換
10a = np.array(list(d.items()), dtype=object)

辞書型をnp.arrayに渡しても意図した通りには動きません。 キーと値をどのように処理するかを明記する必要があります。

データフレームから多次元配列したい

 1import pandas as pd
 2import numpy as np
 3
 4d = {
 5    "a": [1, 2, 3],
 6    "b": [4, 5, 6],
 7}
 8df = pd.DataFrame(d)
 9a = df.to_numpy()
10# ==> array([
11#       [1, 4],
12#       [2, 5],
13#       [3, 6]
14#     ])

pandas.DataFrameが持っているto_numpyメソッドで、 NumPy配列に変換できます。 列方向に定義したデータを、行方向のデータにできます。