Python入門トップページ


目次

  1. NumPy とは
  2. Python リストの場合
  3. NumPy の使用例
    1. 1次元配列(ベクトル)
    2. 2次元配列(行列)
    3. 要素の取り出し
    4. ベクトルと行列の変換
    5. NumPy のデータ型
    6. NumPy 配列の作成と操作
    7. ユニバーサル関数と集約関数
    8. NumPy 配列のソート
    9. NumPy の構造化配列
    10. NumPy 配列の保存と読み込み
  4. NumPy で線形代数
  5. NumPy の乱数生成

NumPy

NumPy の使用例

要素の取り出し

1次元配列(ベクトル)

ベクトルの要素を取り出す例をいくつか示します.まずベクトルを準備して,すべての要素を取り出します.

import numpy as np # プログラムの先頭でモジュールを読み込む
# 要素の取り出し
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(a)
[ 1  2  3  4  5  6  7  8  9 10]

インデックスを指定して1つの要素を取り出します.このとき,結果はスカラー(一次元配列)で得られることに注意してください.

print(a[0])
1

取り出したい範囲をインデックスを指定することもできます.

print(a[1:3])
[2 3]

インデックス2から最後まで取り出すには次のように記述します.

print(a[2:])
[ 3  4  5  6  7  8  9 10]

先頭からインデックス2(の手前)まで取り出します.

print(a[:2])
[1 2]

範囲の始点は先頭で,後ろから数えたインデックス2の手前まで取り出します.

print(a[:-2])
[1 2 3 4 5 6 7 8]

:だけを指定してもすべてを取り出すことができます.

print(a[:])
[ 1  2  3  4  5  6  7  8  9 10]

::を指定した場合もすべてを取り出すことができます.

print(a[::])
[ 1  2  3  4  5  6  7  8  9 10]

::2を指定した場合は2個ごとにすべてを取り出すことができます.

print(a[::2])
[1 3 5 7 9]

1::2を指定した場合はインデックス1から2個ごとにすべてを取り出すことができます.

print(a[1::2])
[ 2  4  6  8 10]

もちろん ::3により3個ごとにすべてを取り出すことができます.

print(a[::3])
[ 1  4  7 10]

さらに::-1とすると,逆順に取り出すことができます.なお,この方法は降順ソートを行いたいときにも利用できます.

print(a[::-1])
[10  9  8  7  6  5  4  3  2  1]

目次に戻る

2次元配列(行列)

行列の要素を取り出すためには,次のように記述すると良いでしょう.まずは3行 x 3列の行列を定義します.

行列の定義import numpy as np # プログラムの先頭でモジュールを読み込む
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(A)
[[1 2 3]
 [4 5 6]
 [7 8 9]]

行と列のインデックスを順に指定して,ひとつの要素を取り出します.

要素の取り出しprint(A[0, 0])
1

インデックス1の行,インデックス2の列を指定して要素をひとつ取り出します.

要素の取り出しprint(A[1, 2])
6

先頭行を取り出します.

行の取り出しprint(A[0])
[1 2 3]

複数の行を取り出します.

複数行の取り出しprint(A[0:2])
[[1 2 3]
 [4 5 6]]

次のように記述しても全ての行を取り出すことができます.

全ての行の取り出しprint(A[:])
[[1 2 3]
 [4 5 6]
 [7 8 9]]

次は先頭列のみを取り出します.この時,「全ての行」の「先頭列」を抽出するように記述していることに注意してください.また,得られた結果は1次元配列になっていることにも注意してください.

先頭行の取り出しprint(A[:, 0])
[1 4 7]

別の列も取り出してみます.

print(A[:, 1])
[2 5 8]

複数の列を取り出すには次のように記述します.

複数列の取り出しprint(A[:, 1:3])
[[2 3]
 [5 6]
 [8 9]]

先頭列を除いてインデックス1列目以降を全て取り出します.

先頭列以外の取り出しprint(A[:, 1:])
[[2 3]
 [5 6]
 [8 9]]

ある範囲だけを行列で取り出します.

ある範囲の取り出しprint(A[1:, 1:])
[[5 6]
 [8 9]]

目次に戻る