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

Python NumPyのchar.endswith()で配列内の文字列要素が指定した接尾辞で終わるか判定する方法

配列内の文字列要素が指定した接尾辞(サフィックス)で終わる場合に True となるブール配列(真偽値の配列)を返すには、Python NumPy の numpy.char.endswith() メソッドを使用します。

第1引数には入力配列を、第2引数には判定したい接尾辞を指定します。numpy.char モジュールは、numpy.str_ 型の配列に対してベクトル化された文字列操作を提供するモジュールです。Python の組み込みメソッド str.endswith() を配列全体に一括適用できるため、ループ処理を書く必要がなく、効率的に判定を行えます。

実行手順

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

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)

文字列要素が接尾辞で終わる位置で True となるブール配列を返すには、numpy.char.endswith() メソッドを使用します。

print("\nResult (endswith)...\n", np.char.endswith(arr, 'E'))

完全なコード例

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.endswith() を使用して、
# 各要素が接尾辞 'E' で終わるかどうかを判定
# 第1引数:入力配列、第2引数:接尾辞
print("\nResult (endswith)...\n", np.char.endswith(arr, 'E'))

出力結果

Array...
['KATIE' 'JOHN' 'KATE' 'AmY' 'BRADley']

Array datatype...
<U7

Array Dimensions...
1

Our Array Shape...
(5,)

Number of elements in the Array...
5

Result (endswith)...
[ True False True False False]

補足ポイント

上記の出力からわかるように、'KATIE''KATE' は末尾が 'E' であるため True となり、それ以外の要素は False と判定されています。

なお、np.char.endswith() では大文字と小文字が区別される点に注意してください。例えば 'AmY' の末尾は 'Y' であり 'E' ではないため False になります。大文字小文字を区別せずに判定したい場合は、あらかじめ np.char.upper()np.char.lower() で配列の要素を正規化してから判定するとよいでしょう。

  1. 【Python・NumPy】rindex()メソッドで指定範囲内に見つかった部分文字列の最大インデックスを取得する方法

    PythonのNumPyライブラリには、文字列配列を操作するための便利な関数が多数用意されています。その中でもnumpy.char.rindex()メソッドは、文字列の中で指定した部分文字列(サブ文字列)が最も右側(高いインデックス)で見つかった位置を返すメソッドです。 このメソッドはint型の要素を持つ出力配列を返します。もし部分文字列が見つからなかった場合は、ValueErrorが発生する点に注意してください。これは、見つからない場合に-1を返すrfind()メソッドとの大きな違いです。 rindex()メソッドのパラメータ 第1引数: 検索対象となる入力配列 第2引数: 検索する部分文

  2. 【Python】配列を積が等しい2つの部分配列に分割する要素を見つける方法

    問題の概要 サイズ N の配列が与えられたとき、その配列を積が等しい2つの部分配列に分割する要素を見つけます。そのような分割が不可能な場合は -1 を返します。 例えば、入力が [2,5,3,2,5] の場合、出力は 3 となります。このとき配列は {2, 5} と {2, 5} に分割され、それぞれの積はどちらも 10 で一致します。 解き方の考え方 この問題は、先頭からの累積積(プレフィックス積)と末尾からの累積積(サフィックス積)を事前に計算しておくことで効率的に解けます。各位置における左側の積と右側の積を即座に比較できるため、全体の計算量は O(N) に抑えられます。 具体的な手順は