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

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

文字列の中で部分文字列(sub)が最初に見つかった位置(最小インデックス)を取得するには、Python NumPyのnumpy.char.find()メソッドを使用します。このメソッドは整数型(int)の出力配列を返し、部分文字列が見つからなかった場合は-1を返します。

第1引数には入力配列を、第2引数には検索対象となる部分文字列を指定します。

手順

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

import numpy as np

文字列の1次元配列を作成します。

arr = np.array(['KATIE', 'JOHN', 'KATE', '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」という部分文字列を検索します。

print("\nResult (find)...\n",np.char.find(arr, 'AT'))

完全なコード例

import numpy as np

# 文字列の1次元配列を作成
arr = np.array(['KATIE', 'JOHN', 'KATE', '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()メソッドを使用して、部分文字列subが見つかった最小インデックスを返す
# このメソッドはint型の出力配列を返し、subが見つからない場合は-1を返す
# 第1引数は入力配列、第2引数は検索する部分文字列
print("\nResult (find)...\n",np.char.find(arr, 'AT'))

出力結果

Array...
['KATIE' 'JOHN' 'KATE' '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:「AT」が位置1(2文字目)に見つかります。
  • 'JOHN'-1:「AT」は含まれていません。
  • 'KATE' → インデックス 1:「AT」が位置1に見つかります。
  • 'AmY'-1:「AT」は含まれていません。
  • 'BRADley'-1:大文字小文字が区別されるため、「AT」は一致しません。

このように、np.char.find()は大文字と小文字を区別して検索を行う点に注意してください。大文字小文字を無視して検索したい場合は、事前にnp.char.upper()np.char.lower()で配列の要素を正規化してからfind()を適用するとよいでしょう。

  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