Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python NumPy】char.rfind()で部分文字列が見つかった最大インデックスを要素ごとに取得する方法

文字列の中で部分文字列 sub が見つかった位置のうち、最も大きい(右端の)インデックスを返すには、Python NumPy の numpy.char.rfind() メソッドを使用します。このメソッドは整数(int)の出力配列を返し、部分文字列が見つからなかった場合は -1 を返します。

rfind() は各要素に対して右側から検索を行うため、同じ部分文字列が複数回出現する場合でも、最後に見つかった位置のインデックスが結果として得られます。

パラメータについて

  • 第1引数: 検索対象となる入力配列
  • 第2引数: 検索する部分文字列
  • 第3・第4引数(省略可能): startend は Python のスライス表記と同様に解釈され、検索範囲を限定できます

実行手順

まず、必要なライブラリをインポートします。

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)

部分文字列が見つかった最大インデックスを返すために、numpy.char.rfind() メソッドを使用します。

print("\nResult (find)...\n",np.char.rfind(arr, 'AT', start = 4, end = 9))

完全なコード例

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)

# 部分文字列が見つかった最大インデックスを返す
# numpy.char.rfind() メソッドを使用
print("\nResult (find)...\n",np.char.rfind(arr, 'AT', start = 4, end = 9))

出力結果

Array...
['KATIE' 'JOHN' 'AmY' 'BRATleuATp']

Array datatype...
<U10

Array Dimensions...
1

Our Array Shape...
(4,)

Number of elements in the Array...
4

Result (find)...
[-1 -1 -1 7]

結果の解説

この例では、検索範囲を start=4end=9 に限定しています。そのため、以下のような結果になります。

  • 'KATIE': インデックス4以降に 'AT' が存在しないため -1
  • 'JOHN': 'AT' が含まれていないため -1
  • 'AmY': 大文字小文字が区別されるため 'AT' は一致せず -1
  • 'BRATleuATp': インデックス7の位置に 'AT' が見つかり 7 を返す

なお、np.char.find() との違いは、find() が最初に見つかった位置(最小インデックス)を返すのに対し、rfind() は最後に見つかった位置(最大インデックス)を返す点です。文字列の右側からの検索が必要な場合に便利です。

  1. Python・Pandasでインデックスのデータを表す配列を取得する方法(index.values)

    PandasのIndexオブジェクトに格納されているデータをNumPy配列として取得したい場合は、index.valuesプロパティを使用します。このプロパティは、インデックスの各要素を含む配列を返してくれるため、データの抽出や他の処理への受け渡しが簡単に行えます。 index.valuesプロパティの基本的な使い方 まず、必要なライブラリをインポートします。 import pandas as pd 次に、Indexオブジェクトを作成します。ここでは、交通手段の名前を要素とするインデックスを作成してみましょう。 index = pd.Index([Car,Bike,Truck,Ship,Air

  2. 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