【Python NumPy】char.find()で文字列ごとに部分文字列が見つかった最小インデックスを取得する方法
文字列の中で部分文字列(サブストリング)subが最初に見つかった位置(最小のインデックス)を取得したい場合は、Python NumPyのnumpy.char.find()メソッドを使用します。
このメソッドは整数(int)の出力配列を返し、部分文字列が見つからなかった要素には-1が格納されます。各引数の役割は以下の通りです。
- 第1引数:入力となる文字列の配列
- 第2引数:検索対象の部分文字列
- 第3・第4引数(任意):
startとendは、Pythonのスライス表記と同じように解釈されます
実行手順
1. 必要なライブラリをインポートする
import numpy as np
2. 1次元の文字列配列を作成する
arr = np.array(['KATIE', 'JOHN', 'CRATE', 'AmY', 'BRADley'])
3. 配列を表示する
print("Array...\n",arr)4. データ型を確認する
print("\nArray datatype...\n",arr.dtype)5. 配列の次元を確認する
print("\nArray Dimensions...\n",arr.ndim)6. 配列の形状を確認する
print("\nOur Array Shape...\n",arr.shape)7. 配列の要素数を確認する
print("\nNumber of elements in the Array...\n",arr.size)8. numpy.char.find()で最小インデックスを取得する
ここでは、'AT'という部分文字列を、各文字列のインデックス1〜3の範囲内で検索します。
print("\nResult (find)...\n",np.char.find(arr, 'AT', start = 1, end = 3))完全なコード例
import numpy as np
# 1次元の文字列配列を作成
arr = np.array(['KATIE', 'JOHN', 'CRATE', 'AmY', 'BRADley'])
# 配列を表示
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.find()で部分文字列'AT'が見つかった最小インデックスを取得
# 見つからない場合は-1が返される
print("\nResult (find)...\n",np.char.find(arr, 'AT', start = 1, end = 3))実行結果
Array... ['KATIE' 'JOHN' 'CRATE' 'AmY' 'BRADley'] Array datatype... <U7 Array Dimensions... 1 Our Array Shape... (5,) Number of elements in the Array... 5 Result (find)... [ 1 -1 -1 -1 -1]
結果の解説
出力を見ると、最初の要素'KATIE'に対してのみ1が返されています。これは、インデックス1〜3の範囲(start=1、end=3)で'AT'が見つかったためです。それ以外の要素('JOHN'、'CRATE'など)では、指定範囲内に'AT'が存在しないため、すべて-1が返されています。
なお、'CRATE'には全体としては'AT'が含まれていますが、その位置が範囲外であるため検出されない点に注意してください。startとendを指定することで、検索範囲を柔軟に制御できるのがこのメソッドの特徴です。
-
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