読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

numpy.deleteで行や列を削除

Python

定義

numpy.delete(arr, obj, axis=None)

  • arrはnumpyの配列(array_like)
  • objに削除したいインデックスなどを入れる
  • axisで削除する方向を決める。行とか列とか

一部を削除したnumpyの配列を新しく返す。元のarrはそのままで変わらない

使い方

numpy配列の例

3行目のaはjupyterやipythonでaを出力させるためのもの

import numpy as np
a= np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

行を削除

行というか、1次元配列ならそのまま指定したインデックスを削除。2次元配列なら行を削除。axis=0を使う。

np.delete(a, 0, 0)
array([[4, 5, 6],
       [7, 8, 9]])

インデックスはリストで複数指定できる

np.delete(a, [0, 1], 0)
array([[7, 8, 9]])

列を削除

axis = 1を使う。2次元以上じゃないとエラーが出る

np.delete(a, 0, 1)
array([[2, 3],
       [5, 6],
       [8, 9]])

 注意点

axisをちゃんと指定しないとややこしいことになるので注意。

1次元の場合は問題ない

b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = np.array(b)
b
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

想像通りに削除できる

np.delete(b, 0)
array([2, 3, 4, 5, 6, 7, 8, 9])

2次元だと思い描いた通りにならない。
axisはデフォルトでNoneであり、Noneだとflattened arrayが返されてしまう。第3引数を忘れてはいけない。

a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
np.delete(a, 0)
array([2, 3, 4, 5, 6, 7, 8, 9])