Python NumPy / ndarray の attribute #2

株式会社リュディアです。今回も NumPy についてまとめていきます。

前回までの NumPy / ndarray の attribute についてのまとめへのリンクは以下を参考にしてください。

今回も以下のリンクの内容を元にまとめていきます

前回に続き ndarray の attribute についてです。今回は Other attributes に属するものをまとめます。

Other attributes

ndarray.T : 転置配列、転置は行と列を入れ替えたもの

ndarray.real : 配列の実数部分

ndarray.imag : 配列の虚数部分

ndarray.flat : 配列全体の1次元イテレータ

ndarray.ctypes : ctypes モジュールと配列の相互作用を単純化するためのオブジェクト

T 転置からです。高校や大学の数学で転置行列を習いましたが同じです。行と列を入れ替えます。以下、具体的なコードで見てみましょう。

import numpy as np

x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
print(x.T)

#
# [[1 4]
#  [2 5]
#  [3 6]]
#

2行3列の配列が 3行2列の配列になってますね。

次の real imag は複素数に関連するものです。Python の複素数については以下を参考にしてください。

real と imag を使ったコードを用意するために、コード中の配列の要素を複素数にします。次の例を見てください。

import numpy as np

x = np.array([[1+2j, 2-3j, 3+7j], [4-1j, 5+9j, 6-4j]], np.complex128)
print(x)
#
# [[1.+2.j 2.-3.j 3.+7.j]
#  [4.-1.j 5.+9.j 6.-4.j]]
#

先ほどまでと同じく2行3列の配列ですが要素の dtype が complex128 の複素数になっています。この配列の real と imag の属性を見てみます。

import numpy as np

x = np.array([[1+2j, 2-3j, 3+7j], [4-1j, 5+9j, 6-4j]], np.complex128)
print(x)
print(x.real)
print(x.imag)
#
# [[1.+2.j 2.-3.j 3.+7.j]
#  [4.-1.j 5.+9.j 6.-4.j]]
#
# [[1. 2. 3.]
#  [4. 5. 6.]]
#
# [[ 2. -3.  7.]
#  [-1.  9. -4.]]

配列の全要素に対して複素数の実部だけ、虚部の成分だけの同じ形状の配列が表示されていることがわかりますね。

flat は名前の通り行列などの次元の構造を潰して平坦化します。全要素に対するイテレータを使うような場合に便利です。以下の例を見てください。わかりやすくするために配列の要素の順序を入れ替えています。

import numpy as np

x = np.array([[1, 3, 2], [5, 6, 4]], np.int32)
print(x)

for item in x.flat:
   print(item)
#
# [[1 3 2]
# [5 6 4]]
#
# 1
# 3
# 2
# 5
# 6
# 4
#

どうでしょうか?2次元配列の要素を1次元に並べたものが表示されていることがわかりますね。

ctypes はここでは省略します。C言語の型を Python で使う ctypes の変数と絡めて後日まとめを行います。

これで ndarray の attribute のまとめを終わります。

では、ごきげんよう。







この記事が気に入ったらサポートをしてみませんか?