PythonでreverseメソッドやNumpyを使って配列を反転させる方法10つ

スポンサーリンク
スポンサーリンク

イントロダクション

この記事では、Pythonで配列を反転させるさまざまな方法について説明します。

Python言語には配列データ構造のサポートがありません。

その代わり、使いやすいリスト構造が組み込まれており、操作を実行するためのメソッドもいくつか提供されています。

ArrayやNumPyのようなモジュールをインポートすることで、Pythonの典型的な配列を使い続けることができます。

このチュートリアルは3つのパートに分かれており、それぞれがPythonの個々のArrayの型を反転させることを扱っています。

それらは以下の通りです。

  • Pythonで配列のリストを反転します。
  • PythonのArrayモジュールのArrayを反転します。
  • PythonでNumPyの配列を反転させる。

では、さっそく本題に入りましょう。

Pythonでリスト配列を反転させる

すでに説明したように、Pythonではリストと配列は似ています。

両者の大きな違いは、配列は同じデータ型の項目しか扱えないのに対し、リストは異なるデータ型の項目も扱えることです。

Pythonは従来の配列をサポートしていないので、リストを使って同じものを表現し、それを逆にしてみることができます。

このタスクを達成するためのさまざまな方法を見てみましょう。

1. Pythonでリストスライシングを使って配列を反転させる

スライシングメソッドを使って、リスト配列を反転させることができます。

この方法では、実際に元のリストと逆の順序で新しいリストを作成します。

どのように行うか見てみましょう。

#The original array
arr = [11, 22, 33, 44, 55]
print("Array is :",arr)
 
res = arr[::-1] #reversing using list slicing
print("Resultant new reversed array:",res)

結果は以下の通りです。

Array is : [1, 2, 3, 4, 5]
Resultant new reversed array: [5, 4, 3, 2, 1]

2. reverse() メソッドの使用

Pythonには、リストアイテムの順序を元の場所で直接逆転させる組み込みメソッド reverse() も用意されています。

Note: この方法では、実際のリストの順序を変更します。

したがって、元の順番は失われます。

#The original array
arr = [11, 22, 33, 44, 55]
print("Before reversal Array is :",arr)
 
arr.reverse() #reversing using reverse()
print("After reversing Array:",arr)

結果を出力すると、以下の様になります。

Before reversal Array is : [11, 22, 33, 44, 55]
After reversing Array: [55, 44, 33, 22, 11]

3. reversed() メソッドの使用

さらに別のメソッドとして reversed() があります。

これはリストと一緒に渡されると、リストのアイテムだけを逆順に並べた反復子オブジェクトを返します。

このイテラブルオブジェクトに対して list() メソッドを実行すると、反転した配列を含む新しいリストが得られます。

#The original array
arr = [12, 34, 56, 78]
print("Original Array is :",arr)
#reversing using reversed()
result=list(reversed(arr))
print("Resultant new reversed Array:",result)

結果は、以下の通りになります。

Original Array is : [12, 34, 56, 78]
Resultant new reversed Array: [78, 56, 34, 12]

PythonでArrayモジュールの配列を反転させる

Pythonは配列をサポートしていませんが、Arrayモジュールを使って異なるデータ型の配列のようなオブジェクトを作成することができます

このモジュールは配列のデータ型に関して多くの制約がありますが、Pythonで配列のデータ構造を扱うのに広く使われています。

それでは、Arrayモジュールで作成した配列をPythonでどのように反転させるか見てみましょう。

1. reverse() メソッドの使用

リストと同様に、PythonのArrayモジュールでは reverse() メソッドを使用して配列を直接反転させることができます。

これは配列を元の位置で反転させるので、結果を格納するための余分なスペースは必要ありません。

import array
 
#The original array
new_arr=array.array('i',[2,4,6,8,10,12])
print("Original Array is :",new_arr)
 
#reversing using reverse()
new_arr.reverse()
print("Reversed Array:",new_arr)

結果は以下の通りです。

Original Array is : array('i', [2, 4, 6, 8, 10, 12])
Resultant new reversed Array: array('i', [12, 10, 8, 6, 4, 2])

2. reversed() メソッドの使用

逆順に配列が渡された場合、reversed()` メソッドは逆順の要素を持つイテラブルを返します。

以下の例では、このメソッドを使って配列を逆順にする方法を示しています。

import array
 
#The original array
new_arr=array.array('i',[10,20,30,40])
print("Original Array is :",new_arr)
 
#reversing using reversed()
res_arr=array.array('i',reversed(new_arr))
print("Resultant Reversed Array:",res_arr)

結果は以下の通りです。

Original Array is : array('i', [10, 20, 30, 40])
Resultant Reversed Array: array('i', [40, 30, 20, 10])

PythonでNumPyの配列を逆順にする

Numpy`モジュールを使うと、Pythonで配列データ構造を使うことができます。

これは本当に高速で、同じデータ型の配列しか使えません。

ここでは、NumPyモジュールで構築されたPythonの配列を反転させることにします。

1. flip() メソッドの使用

NumPy モジュールの flip() メソッドは、NumPy の配列の順序を反転させ、NumPy の配列オブジェクトを返します。

import numpy as np
 
#The original NumPy array
new_arr=np.array(['A','s','k','P','y','t','h','o','n'])
print("Original Array is :",new_arr)
 
#reversing using flip() Method
res_arr=np.flip(new_arr)
print("Resultant Reversed Array:",res_arr)

結果を出力すると、以下の様になります。

出力:

Original Array is : ['A' 's' 'k' 'P' 'y' 't' 'h' 'o' 'n']
Resultant Reversed Array: ['n' 'o' 'h' 't' 'y' 'P' 'k' 's' 'A']

2. flipud() メソッドの使用

flipud()`メソッドは、配列を上下に反転させるNumPyモジュールのもう一つのメソッドです。

また、Python の NumPy 配列を反転させることもできます。

小さな例でどのように使用できるかを見てみましょう。

import numpy as np
 
#The original NumPy array
new_arr=np.array(['A','s','k','P','y','t','h','o','n'])
print("Original Array is :",new_arr)
 
#reversing using flipud() Method
res_arr=np.flipud(new_arr)
print("Resultant Reversed Array:",res_arr)

結果は以下の通りです。

Original Array is : ['A' 's' 'k' 'P' 'y' 't' 'h' 'o' 'n']
Resultant Reversed Array: ['n' 'o' 'h' 't' 'y' 'P' 'k' 's' 'A']

3. 簡単なスライシングを使う

先ほどリストで行ったように、Numpyで構築されたPythonの配列もスライシングを使って逆順にすることができます

新しいNumPyの配列オブジェクトを作成し、逆順のアイテムを保持します。

import numpy as np
 
#The original NumPy array
new_arr=np.array([1,3,5,7,9])
print("Original Array is :",new_arr)
 
#reversing using array slicing
res_arr=new_arr[::-1]
print("Resultant Reversed Array:",res_arr)

結果は以下の通りです。

Original Array is : [1 3 5 7 9]
Resultant Reversed Array: [9 7 5 3 1]

まとめ

この記事では、Pythonで様々なメソッドやテクニックを使って配列を反転させる方法を学びました。

このチュートリアルが明確な理解を与えてくれることを願っています。

タイトルとURLをコピーしました