python と numpy の配列。追加や削除、ソートなど基本操作

python のリストと Numpy の ndarray はどちらもデータの配列です。用途はそれぞれ異なりますが、追加や削除のような基本的な機能はどちらにもあります。が、そうした機能も、使える関数やメソッドに微妙な違いがあるので整理してみました。

python 配列 numpy 配列
追加 append
numpy.append
numpy.append
挿入 insert
numpy.insert
numpy.insert
連結 extend
numpy.append
+ 演算子
numpy.append
削除 del
pop
remove
numpy.delete
numpy.delete
配列の
繰返し
* 演算子 repeat
ソート sort
sorted
sort
sorted

赤字 はメソッド

メソッドで配列を操作すると元の配列が変更されます(repeat は除く)。
sorted や numpy.append のような関数で操作を行うと元の配列は変更されず、新たに配列のオブジェクトが生成されます。
メソッドでも関数でもない del は元の配列を変更します。

- 目次 -

スポンサーリンク

追加

要素を末尾に追加する方法です。

python

numpy

挿入

要素を任意の場所に挿入する方法です。

python

numpy

numpy 配列の挿入は insert で行いますが、文字列を扱う場合、文字列の長さについて以下の注意が必要です。

配列の生成時に dtype で文字列の最大長を指定しておきます。

python 2系 の場合は Sバイト数 または U文字数
例 dtype=’S6‘ (S は str型)
  dtype=’U2‘ (U は unicode型)

python 3系 の場合は U文字数
例 dtype=’U4

指定しない場合、初期化文字列のなかで最大長のものが、dtype に設定されます。insert では、この最大長の文字しか挿入できません。最大長を超える部分は切り捨てられます。

numpy 配列に insert すると、なぜか長さが切りつめられてしまいます。
上の例だと、’ZZZZ’ を挿入するつもりが ‘Z’ になってしまう ???

連結

配列と配列を連結する方法です。

python

numpy

削除

要素を削除する方法です。

python

numpy

繰り返し

配列を繰り返します。

python

numpy

ソート

ソートです。

python

reverse=True で降順。

numpy

reverse=True で降順。

numpy の sort メソッドは reverse 指定ができません。

スポンサーリンク
  1. 通りすがり says:

    通りすがりのものです.

    >numpy 配列に insert すると、なぜか長さが切りつめられてしまいます。
    >上の例だと、’ZZZZ’ を挿入するつもりが ‘Z’ になってしまう ???
    とありますが,これは,list_nを作る際に,文字列の幅が1になっているからだと思います.
    list_n = np.array(['a','b','c'], dtype='|S4')
    np.insert(list_n, 1, 'ZZZZ')
    とすれば,うまくいくと思います.

    • 通りすがりさん、どうも有難うございます。

      こんな事情があるとは知りませんでした。勉強になります。
      個人的には numpy、エラーにしてくれればいいのにと思ってしまいました(笑)

コメントはお気軽に