Pythonではdef文で関数を定義するが、lambda(ラムダ式)で名前を持たない無名関数を作成することもできる。lambdaは引数として関数(呼び出し可能なオブジェクト)を指定する場合などに使うと便利。書き方および使い方を説明する。 4. その他の制御フローツール - ラムダ式 — Python 3.11.3 ドキュメント 6. 式 (expression) - ラムダ (lambda) — Python 3.11.3 ドキュメント
Pythonで、リスト(配列)から、 重複した要素を削除(一意な要素・ユニークな要素のみを抽出) 重複した要素を抽出 して、新たなリストを生成する方法について説明する。 なお、リストではなくタプルの場合も同様の考え方で実現可能。 リストやタプルが重複した要素を持っているかどうかを判定したい場合、一つのリストではなく複数のリスト間で共通する要素や共通しない要素を抽出したい場合は以下の記事を参照。 関連記事: Pythonでリスト(配列)に重複した要素があるか判定 関連記事: Pythonで複数のリストに共通する・しない要素とその個数を取得 なお、リストは異なる型のデータを格納可能で、厳密には配列とは異なる。配列を扱いたい場合はarray(標準ライブラリ)やNumPyを使う。 関連記事: Pythonのリストと配列とnumpy.ndarrayの違いと使い分け numpy.ndarrayに対する
NumPyで、CSV(カンマ区切り)やTSV(タブ区切り)などのファイルを配列ndarrayとして読み込むにはnp.loadtxt()またはnp.genfromtxt()、ndarrayをCSVやTSVファイルとして出力(保存)するにはnp.savetxt()を使う。 便宜上、タイトルおよび見出しではCSVとしているが、カンマ区切りに限らず任意の文字列で区切られたテキストファイルを処理できる。 最後に触れるように、ヘッダー(見出し行)を含んでいたり、数値の列と文字列の列が混在していたりするファイルの読み書きにはpandasが便利。 また、他のアプリケーションで使う必要がなければNumPy独自のバイナリ形式で保存する方が楽。以下の記事を参照。 関連記事: NumPy配列ndarrayをバイナリファイル(npy, npz)で保存 本記事のサンプルコードのNumPyのバージョンは以下の通り。バー
区切り文字で分割: split() 区切り文字で分割するには文字列(str型)のsplit()メソッドを使う。 組み込み型 - str.split() — Python 3.11.4 ドキュメント デフォルトは空白文字(スペースや改行\n、タブ\tなど)で分割する。連続する空白文字はまとめて処理される。 戻り値はリスト。 s_blank = 'one two three\nfour\tfive' print(s_blank) # one two three # four five print(s_blank.split()) # ['one', 'two', 'three', 'four', 'five'] print(type(s_blank.split())) # <class 'list'>
Pythonのサードパーティライブラリpypdf(旧PyPDF2)を使うと、PDFファイルのメタデータ(作成者、タイトルなど)の取得や削除、変更ができる。 py-pdf/pypdf: A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files ここでは以下の項目について説明する。 pypdfのインストール PDFファイルのメタデータの項目 PDFファイルのメタデータを取得 PDFファイルのメタデータを削除 メタデータをすべて削除 メタデータを選択して削除 PDFファイルのメタデータを追加・変更 パスワードが設定されたPDFファイルの処理 XMPによるメタデータを取得(PDF 2.0) サンプルで使用しているPDFファイルは以下のリンクから
Pythonでテキストファイル内の任意の文字列を含む行を抽出する方法を説明する。いわゆるgrep的な処理。 行を抽出する基本的な流れ 行の中身を抽出 行番号を抽出 行番号と行の中身を抽出 該当する最初の行のみ抽出 行を抽出する基本的な流れ テキストファイルから条件に応じて行を抽出する基本的な流れは以下の通り。 readlines()で各行を要素とするリストを取得 リストから条件に応じた行を抽出 以下、具体的な例を示す。 テキストファイルの中身をリストとして取得 以下のファイルを例とする。 path = 'data/src/sample_for_grep.txt' with open(path) as f: print(f.read()) # XXX YYY ZZZ # YYY # aaa # XXX # ZZZ XXX # xxx
Python2の整数型にはintとlongの2つの型があったが、Python3にはintしかない。Python3のintはPython2のlongに相当し、最大値の上限はなく、メモリの許す限り大きな値を扱うことが可能。 浮動小数点数float型の取り得る範囲(最大値・最小値)については以下の記事を参照。 関連記事: Pythonの浮動小数点数float型の範囲(最大値・最小値) なお、NumPyではint32(32ビット整数型)やint64(64ビット整数型)のようにビット数が固定のデータ型が用いられる。 関連記事: NumPyのデータ型dtype一覧とastypeによる変換(キャスト) Python2の整数int型と長整数long型 Python2では通常の整数型のint型と長整数型のlong型があった。 5. 組み込み型 - 数値型 int, float, long, complex
Pythonで行列の演算を行うにはNumPyを使うと便利。 Python標準のリスト型でも2次元配列(リストのリスト)を実現できるが、NumPyを使うと行列の積や逆行列、行列式、固有値などを簡単に算出できる。 NumPyには汎用的な多次元配列のクラスnumpy.ndarrayと、行列(2次元配列)に特化したクラスnumpy.matrixがある。 numpy.ndarray — NumPy v1.13 Manual numpy.matrix — NumPy v1.13 Manual ndarrayでもmatrixでも行列(2次元配列)の演算(行列の積、逆行列など)が可能だが、matrixを使ったほうがコードを簡潔に書けるようになっている。 行列の積や逆行列を頻繁に計算する場合はmatrixのほうが記述が楽かもしれないが、そうでなければ特にmatrixを使う必要はない。 なお、最大値や最小値を
PythonのOpenCVでは画像をNumPy配列ndarrayとして扱う。NumPyの機能を使うと、2つの画像が完全一致しているか判定したり、差分画像を生成して保存したりできる。 ここでは以下の内容について説明する。 画像が完全に一致しているか判定 差分画像を算出し保存 差分の絶対値 差分0を128とする 差分を二値化 差分が生じている座標を取得 以下のサンプルコードではOpenCVで画像ファイルを読み書きしているが、画像の比較処理自体にはOpenCVの機能は使わない。 画像をNumPy配列ndarrayとして読み込めればOpenCVは必要なく、例えば、Pillowを使うことも可能。以下の記事を参照。ndarrayの処理例なども紹介している。 関連記事: Python, NumPyで画像処理(読み込み、演算、保存) なお、ここでは画素(ピクセル)ごとの単純な差分を考える。圧縮画像などの画
NumPy配列numpy.ndarrayは基本的にミュータブルで要素を指定して値を更新可能。numpy.ndarrayの設定を変更することでイミュータブル(書き換え禁止, read-only)にできる。 誤って値を更新してしまうのを防ぐのに便利。 ここでは以下の内容について説明する。 ndarrayのメモリレイアウト情報を格納しているflags WRITEABLE属性で配列をイミュータブル(書き換え禁止)に設定 WRITEABLE属性を変更できない場合もあり 最後に説明するように、元の配列が書き換え可能である場合は、そのビューを書き換え禁止にしても元の配列から要素の値が更新できるので注意。 ndarrayのメモリレイアウト情報を格納しているflags numpy.ndarrayのメモリレイアウトの情報はflagsに格納されている。 numpy.ndarray.flags — NumPy v
NumPy配列ndarrayに新たな次元を追加する(次元を増やす)には、np.newaxis, np.expand_dims()およびnp.reshape()(またはndarrayのreshape()メソッド)を使う方法がある。 Indexing on ndarrays - Dimensional indexing tools — NumPy v1.26 Manual Constants - numpy.newaxis — NumPy v1.26 Manual numpy.expand_dims — NumPy v1.26 Manual np.reshape()あるいはndarrayのreshape()メソッドは次元を追加するだけでなく任意の形状shapeへの変換が可能。本記事の最後でも触れるが、詳細は以下の記事を参照。 関連記事: NumPy配列ndarrayの形状を変換するreshap
Pythonの標準ライブラリのcsvモジュールを使うと、CSVファイルの読み込み・書き込み(新規作成・上書き保存・追記)ができる。 csv --- CSV ファイルの読み書き — Python 3.11.4 ドキュメント csvというモジュール名だが、カンマ区切りに限らずタブ区切り(TSV)など任意の文字列で区切られたテキストファイル(CSV: Character Separated Value)を処理可能。 すべての引数について触れているわけではないので詳細は公式ドキュメントを参照されたい。 最後に触れるが、CSVファイルから読み込んだデータの平均や合計を算出するなどといった処理を行う場合はNumPyやpandasの使用をオススメする。 本記事のサンプルコードでは、csvモジュールと表示を見やすくするためのpprintモジュールを使う。 関連記事: Pythonのpprintの使い方(リ
Pythonのサードパーティライブラリpypdf(旧PyPDF2)を使うと、PDFファイルのパスワードの設定や解除(暗号化・復号)ができる。 py-pdf/pypdf: A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files 既存のPDFファイルにパスワードを設定して保護したり、パスワード付きの暗号化されたPDFファイルをパスワードなしのPDFファイルとして保存したりすることが可能。あくまでも既知のパスワードを使って解除するだけで、パスワードが分からない場合は解除できない。 ここでは以下の内容について説明する。 pypdfのインストール pypdfによるパスワード処理の制約 PDFファイルが暗号化されているか確認 PDFファイルにパス
Pythonで、試し割り法によって素因数分解を行う方法について説明する。 素因数分解(試し割り法)のサンプルコード 素数とその個数を取得 処理速度(処理時間)の目安 なお、試し割り法はシンプルなアルゴリズムであり、処理速度という点では最適なアルゴリズムではない。 素因数分解 - Wikipedia 試し割り法 - Wikipedia とはいえ、対象とする整数の桁数によっては十分実用に足る。処理速度(処理時間)の目安は最後に示す。 素因数分解(試し割り法)のサンプルコード 試し割り法による素因数分解のサンプルコードを示す。英語版ウィキペディアに掲載されているコードを参考にした。 Trial division - Wikipedia def prime_factorize(n): a = [] while n % 2 == 0: a.append(2) n //= 2 f = 3 while
SymPyは代数計算(数式処理)を行うPythonのライブラリ。 因数分解したり、方程式(連立方程式)を解いたり、微分積分を計算したりすることができる。 公式サイト: SymPy ここでは、SymPyの基本的な使い方として、 インストール 変数、式を定義: sympy.symbol() 変数に値を代入: subs()メソッド 式の展開: sympy.expand() 因数分解: sympy.factor() 方程式を解く: sympy.solve() 連立方程式を解く: sympy.solve() 微分: sympy.diff() 積分: sympy.integrate() 三角関数、指数関数、対数関数などを使う について、サンプルコードとともに説明する。
画像ファイルをNumPy配列ndarrayとして読み込むと、NumPyの機能を使って様々な画像処理を行うことができる。 要素(画素)の値の取得や書き換え、スライスでのトリミング、結合などndarrayの操作がそのまま使えるので、NumPyに慣れている人はOpenCVなどのライブラリを使わなくても様々な処理ができる。 OpenCVを使う場合も、PythonのOpenCVでは画像データをndarrayとして扱うので、NumPy(ndarray)での処理を覚えておくと何かと便利。ほかにも、scikit-imageなど、画像をndarrayとして扱うライブラリは多い。 ここでは、基本的な画像ファイルの読み書きの方法として、 画像ファイルをNumPy配列ndarrayとして読み込む方法 NumPy配列ndarrayを画像ファイルとして保存する方法 と、NumPy(ndarray)での画像処理の例、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く