【Python・NumPy】char.rfind()で各要素ごとに部分文字列が見つかる最大のインデックスを取得する方法
numpy.char.rfind()メソッドとは
文字列の中で部分文字列(sub)が見つかった位置のうち、最も大きいインデックス(最後に出現する位置)を取得したい場合は、Python NumPyの numpy.char.rfind() メソッドを使用します。このメソッドはint型の出力配列を返し、部分文字列が見つからなかった要素には -1 を返します。
主な引数は以下の通りです。
- 第1引数: 検索対象となる入力配列
- 第2引数: 検索する部分文字列
実行手順
まず、必要なライブラリをインポートします。
import numpy as np
1次元の文字列配列を作成します。
arr = np.array(['KATIE', 'JOHN', 'AmY', 'BRATleuATp'])
作成した配列を表示します。
print("Array...\n", arr)配列のデータ型を確認します。
print("\nArray datatype...\n", arr.dtype)配列の次元数を取得します。
print("\nArray Dimensions...\n", arr.ndim)配列の形状(shape)を取得します。
print("\nOur Array Shape...\n", arr.shape)配列の要素数を取得します。
print("\nNumber of elements in the Array...\n", arr.size)各要素ごとに部分文字列 'AT' が見つかる最大のインデックスを返すには、np.char.rfind() メソッドを使用します。
print("\nResult (rfind)...\n", np.char.rfind(arr, 'AT'))サンプルコード全体
import numpy as np
# 1次元の文字列配列を作成
arr = np.array(['KATIE', 'JOHN', 'AmY', 'BRATleuATp'])
# 配列を表示
print("Array...\n", arr)
# データ型を取得
print("\nArray datatype...\n", arr.dtype)
# 次元数を取得
print("\nArray Dimensions...\n", arr.ndim)
# 形状を取得
print("\nOur Array Shape...\n", arr.shape)
# 要素数を取得
print("\nNumber of elements in the Array...\n", arr.size)
# 各要素ごとに部分文字列 'AT' が見つかる最大のインデックスを取得
print("\nResult (rfind)...\n", np.char.rfind(arr, 'AT'))実行結果
Array... ['KATIE' 'JOHN' 'AmY' 'BRATleuATp'] Array datatype... <U10 Array Dimensions... 1 Our Array Shape... (4,) Number of elements in the Array... 4 Result (rfind)... [ 1 -1 -1 7]
結果の解説
- 'KATIE': 'AT' はインデックス1に存在するため 1 が返されます。
- 'JOHN': 'AT' は含まれていないため -1 が返されます。
- 'AmY': 大文字小文字が一致しないため -1 が返されます(rfindは大文字小文字を区別します)。
- 'BRATleuATp': 'AT' は複数回出現しますが、rfindは最後の出現位置である 7 を返します。
なお、先頭側の出現位置を調べたい場合は np.char.find() を使用すると、最小のインデックスを取得できます。
-
Python・Pandasでインデックスのデータを表す配列を取得する方法(index.values)
PandasのIndexオブジェクトに格納されているデータをNumPy配列として取得したい場合は、index.valuesプロパティを使用します。このプロパティは、インデックスの各要素を含む配列を返してくれるため、データの抽出や他の処理への受け渡しが簡単に行えます。 index.valuesプロパティの基本的な使い方 まず、必要なライブラリをインポートします。 import pandas as pd 次に、Indexオブジェクトを作成します。ここでは、交通手段の名前を要素とするインデックスを作成してみましょう。 index = pd.Index([Car,Bike,Truck,Ship,Air
-
Pythonで配列内の最大要素のインデックスを見つけるプログラム
ここでは、「TestArray」というクラスが与えられていると想定します。このクラスは外部から直接アクセスできない非公開の配列を保持しており、length() と compare() という2つの公開メンバ関数を提供しています。 length() 関数は配列の長さを返します。一方、compare() 関数は l、r、x、y の4つの引数を受け取り、配列内の2つの部分区間の合計値を比較して、次の3種類の値を返します。 (array[l] + array[l+1] + … + array[r]) > (array[x] + array[x+1] + … + array[y]) のとき:1