Helve’s Python memo

Pythonを使った機械学習やデータ分析の備忘録

<NumPy> 配列の確認

作成したNumPy配列の要素などを確認する。

目次

配列の属性

作成した配列の次元数を確認する場合、 ndim属性を参照する。
また、配列の要素数を確認する場合、 size属性を参照する。
配列の各次元の要素数を確認する場合、 shape属性を参照すると、タプル形式で要素数が返されれる。

>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]]) # 2x3行列
>>> a.ndim   # 次元
2
>>> a.size   # 要素数
6
>>> a.shape  # 各次元の要素数
(2, 3)

要素へのアクセス

1次元配列の場合

1次元配列の要素を取り出す場合、 配列の後ろにを付け、取り出したい要素の順番を数値で指定する。
要素を1個だけ取り出すときは、
内に数値を1個指定する。 ただし、配列の最初の要素は0から始まることに注意。

>>> b = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b[1]       # 1番目
1

連続した複数の要素を取り出すときは、2つの数字を:(コロン)でつなぐと、 最初の数字で指定した要素から、2番めの数字で指定した1つ手前の要素までが返される。
2番目の数字を指定しない場合、最初の数字で指定した要素から、最後の要素までが返される。 また、1番目の数字を指定しない場合、最初の要素から、2番目の数字で指定した要素までが返される。

>>> b[1:7]     # 1番目から7番目まで
array([1, 2, 3, 4, 5, 6])
>>> b[3:]      # 3番目以降
array([3, 4, 5, 6, 7, 8, 9])
>>> b[:3]      # 3番目まで
array([0, 1, 2])

複数の要素を一定の間隔(2つ飛ばしなど)で抜き出すときは、 3つの数字を:でつなぐ。1番めの数字は始まりの要素、 2番目の数字は終わりの要素、3番目の数字は要素をいくつ飛ばすかを表す。

>>> b[1:7:2]   # 1番目から7番目まで2つ飛ばしで
array([1, 3, 5])

配列の末尾を起点として要素の位置を指定する場合、数値にマイナスを付ける。

>>> b[-2]      # 末尾から2番目
8

配列の複数の要素を全て指定して取り出す場合には、 リストで要素の位置を指定する。

>>> b[[0,5,7]] # リストで複数のインデックスを指定
array([0, 5, 7])

2次元配列の場合

2次元配列の場合、行の要素と、列の要素をカンマ,で区切って指定する。 カンマを使わない場合、どの行を取り出すかが指定され、列方向の要素は全て返される。
各行・各列の要素の指定方法は、1次元配列の場合と同じである。

>>> c = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> c
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> c[1,1]     # (1, 1)要素
6
>>> c[0:2]     # 0~1行目
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> c[:, 0:3]  # 0~2列目
array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 9, 10, 11]])
>>> c[0:2,1:3] # 0~1行目かつ1~2列目
array([[2, 3],
       [6, 7]])