Python NumPy 多次元配列のスライシング #2

株式会社リュディアです。引き続き NumPy ndarray 多次元配列のスライシングについてまとめていきたいと思います。

前回までの NumPy ndarray 多次元配列のスライシング のまとめへのリンクは以下を参考にしてください。

今回は2次元配列の列のスライシング、つまり縦方向のスライシングです。以下の記事で Python 標準のリストでの列のスライシングについて言及しました。

このまとめでも記載しましたがPython 標準のリストでは列のスライシングは構文的な観点からも指定が不可能で必要な場合は2次元配列を転置してから横方向のスライシングを行うのが定石です。Python 標準のリストでの転置はそれなりに面倒なのですが NumPy を使う場合はメソッド T を使えば簡単に転置を行えます。次のコードを見てください。

import numpy as np

np_2d = np.arange(20).reshape(4,5)
print(np_2d)

np_2d_t = np_2d.T
print(np_2d_t)

#
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]]
#
# [[ 0  5 10 15]
#  [ 1  6 11 16]
#  [ 2  7 12 17]
#  [ 3  8 13 18]
#  [ 4  9 14 19]]
#

縦横の並びが入れ替わっている、つまり転置が行えていることがわかりますね。ではこの機能を使って列のスライシングを行ってみましょう。まず元の2次元配列のうち必要な列だけを行として取り出してみます。以下のコードを見てください。

import numpy as np

np_2d = np.arange(20).reshape(4,5)
print(np_2d)

print(np_2d.T[1])
print(np_2d.T[3])

print(np_2d.T[0:2])

#
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]]
#
# [ 1  6 11 16]
#
# [ 3  8 13 18]
#
# [[ 0  5 10 15]
#  [ 1  6 11 16]]
#

順に見ていきます。最初に元の2次元配列を表示しています。次にメソッド T を使って元の2次元配列の列 [1] を表示しています。次の例は元の2次元配列の列 [3] を表示しています。

次は複数の列要素を指定してみます。[0:2] としてるので元の2次元配列の列 0 ~ 1 までを選択しています。わかりますね。

今回は2次元配列を転置するためのメソッド T を利用して列のスライシングを行う方法についてまとめました。

Python NumPy 多次元配列のスライシング に関するまとめの続きは以下からどうぞ。

では、ごきげんよう。


いいなと思ったら応援しよう!