【こつこつPython】Pythonで多次元配列を一次元配列に変換する方法|numpy.flatten

272flattenサムネイル
こつこつPython

Pythonで多次元配列を1次元配列に変換する方法です。
使用するのはPythonのnumpyライブラリのflattenメソッドです。

import numpy as np

このような2次元配列を使用します。

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

まず、flattenメソッドを使用して、この2次元配列aを1次元配列に変換してみましょう。
実行します。

a.flatten()

1次元配列に変換できました。

また、flattenメソッドは、デフォルトでは行を優先した順で1次元配列に変換します。
引数orderにFを指定すると、列を優先した順で1次元配列に変換できます。
実行します。

a.flatten(order='F')

列を優先した順で1次元配列に変換できました。

なお、似たメソッドにravelメソッドがあります。
flattenメソッドは配列を新たに作成して返しますが、ravelメソッドは配列があるメモリの場所を返します。
そのため、flattenメソッドで作成した1次元配列の値を変更しても、元の配列の値は変わりませんが、ravelメソッドで作成した1次元配列の値を変更すると、元の配列の値も変わります。

b = a.flatten()
c = a.ravel()

作成したそれぞれの配列の値を一部変更し、元の配列aが変化するか確認してみましょう。
まず、flattenメソッドで作成した配列bの0番目の値に10を代入し、元の配列aを表示してみます。
実行します。

b[0] = 10
a

配列aは変化しません。

次にravelメソッドで作成した配列cの0番目の値に10を代入し、元の配列aを表示してみます。
実行します。

c[0] = 10
a

配列aの0番目の値にも10が代入されています。
flattenメソッドとravelメソッドにはこのような違いがあることを覚えておきましょう。

関連メソッド

【毎日Python】Pythonで配列を作成する方法|NumPy.arange

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト