【Python NumPy】char.startswith()で配列内の文字列が指定プレフィックスで始まるかを判定する方法
PythonのNumPyには、配列内の文字列要素が指定したプレフィックス(接頭辞)で始まるかどうかを判定し、ブール値(True/False)の配列を返すnumpy.char.startswith()メソッドが用意されています。このメソッドの主な引数は以下の通りです。
- 第1引数:入力配列
- 第2引数:判定に使用するプレフィックス(接頭辞)
- start(任意):比較を開始する位置
- end(任意):比較を終了する位置
実装手順
まず、必要なライブラリをインポートします。
import numpy as np
文字列の1次元配列を作成します。
arr = np.array(['KATIE', 'JOHN', 'KATE', 'KmY', 'BRAD'])
作成した配列を表示します。
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.startswith()メソッドを使用して、文字列要素が指定したプレフィックスで始まる位置がTrueとなるブール配列を返します。ここでは、start=0、end=2を指定することで、各文字列の先頭から2文字目までを比較対象としています。
print("\nResult (startswith)...\n",np.char.startswith(arr, 'K', start = 0, end = 2))
完全なコード例
import numpy as np
# 文字列の1次元配列を作成
arr = np.array(['KATIE', 'JOHN', 'KATE', 'KmY', 'BRAD'])
# 配列を表示
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.startswith()メソッドで、指定プレフィックスで始まる要素を判定
# 戻り値はブール値の配列
print("\nResult (startswith)...\n",np.char.startswith(arr, 'K', start = 0, end = 2))
実行結果
Array... ['KATIE' 'JOHN' 'KATE' 'KmY' 'BRAD'] Array datatype... <U5 Array Dimensions... 1 Our Array Shape... (5,) Number of elements in the Array... 5 Result (startswith)... [ True False True True False]
結果の解説
start=0、end=2と指定しているため、各文字列の0番目から1番目までの2文字が「K」で始まるかどうかが判定されます。その結果、「KATIE」「KATE」「KmY」はTrue、「JOHN」「BRAD」はFalseとなっています。startとendを省略した場合は、文字列全体が比較対象になります。
-
Pythonで指定したサイズ・合計・要素の上限を満たす重複なし配列を作成する方法
問題の概要サイズを表す変数 N、配列内の全要素の合計を表す変数 SUM、そして「どの要素も K を超えてはならない」という上限を表す変数 K が与えられます。このとき、すべての要素が互いに異なる配列を見つけるのが目的です。条件を満たす配列が存在しない場合は -1 を返します。例として、N = 4、SUM = 16、K = 9 が入力された場合、出力は [1, 2, 4, 9] となります。この配列は要素数が4、合計が16、最大値が9以下であり、すべての要素が重複なく並んでいます。解法のアプローチこの問題は、「理論上の最小合計・最大合計による実現可能性の判定」と「貪欲法(グリーディ法)による配列
-
Pythonで文字列の先頭から数値プレフィックスを取得する方法
文字列の先頭に数字が含まれている場合、その数値部分だけを取り出したいことがあります。本記事では、Pythonを使って文字列の先頭に付与された数値プレフィックスを抽出する3つの方法を、具体的なコード例とともに解説します。 isdigitとtakewhileを使う方法 isdigit関数は、文字列の各文字が数字かどうかを判定します。itertoolsモジュールのtakewhile関数と組み合わせることで、条件が真である間だけ要素を取り出せるため、文字列の先頭から連続する数字だけを効率的に結合・取得できます。 サンプルコード from itertools import takewhile #