Python

 Computer >> コンピューター >  >> プログラミング >> Python
  1. Pythonで選択リストの値に基づいて辞書のキーをフィルタリングする方法

    Pythonで辞書(dict)を扱っていると、特定の条件に基づいて不要なキーを除外したり、必要なキーだけを抽出したい場面があります。本記事では、選択リスト(キーの候補リスト)の値をもとに、Pythonの辞書からキーをフィルタリングする方法を、2つのアプローチで解説します。方法1:for文とin演算子を使うまず、フィルタリングしたいキーをリストに格納します。続いて、リストの各要素を順に取り出し、その要素が対象の辞書に存在するかどうかをin演算子で確認します。存在が確認できたキーに対応する値だけを、リスト内包表記を使って新しいリストとしてまとめます。サンプルコードdictA= {Mon:Phy,T

  2. PythonでNumPyのfloat配列から整数を除外する方法

    データクレンジング作業の中には、リストや配列に含まれる整数値を取り除きたいケースがあります。本記事では、float(浮動小数点数)とint(整数)が混在するNumPy配列を用意し、そこから整数を除外してfloatのみを抽出する方法を2つ紹介します。方法1: astypeを使うastype関数は、配列のデータ型を変換するためのメソッドです。これを利用すると、元の配列をint型に変換したものと比較することで、各要素が整数かどうかを判定できます。小数部分を持つfloatは変換時に切り捨てられるため、元の値と一致しなくなります。この性質を利用して、一致しない要素(=真のfloat)だけを結果として残し

  3. Python・Pandasのquery()メソッドでデータを効率的にフィルタリングする方法

    Pandasは、データクレンジングやデータ分析などに幅広く利用されているPythonのライブラリです。本記事では、query()メソッドを使用して、指定したデータセットから条件に合致するデータを抽出する方法を解説します。query()メソッドでは、単一の条件だけでなく、複数の条件を組み合わせた絞り込みも可能です。データの読み込みまず、Pandasライブラリを使ってCSVファイルのデータをDataFrameとして読み込みます。以下のプログラムがその基本的なコードです。サンプルコードimport pandas as pd # CSVファイルからDataFrameを読み込む data = pd.r

  4. Pythonで力の作用後の文字列の最終状態を求めるアルゴリズム

    問題の概要 長さ n の文字列 S を考えてみましょう。この文字列は、隣り合って並んだ n 個の箱を表現しています。位置 i にある文字「R」は、i 番目の箱が右方向へ押されていることを意味し、「L」は左方向へ押されていることを示します。また、「.」(ドット)は空きスペースを表します。 初期配置からスタートし、各時間単位ごとに、右へ押されている箱はその隣の箱を右へ押すことができます。左方向についても同様の動作が起こります。このとき、それ以上の移動が不可能になった状態での、すべての箱の最終的な位置を求めるのが目的です。 入出力の例 たとえば、入力が「R..R...L.」である場合、出力は「RR

  5. Pythonでgcd(N^M, N&M)が最大になる正の整数Mを求める方法

    問題概要 正の整数 N が与えられたとき、M < N を満たす正の整数 M のうち、gcd(N^M, N&M)(N^M はビットごとのXOR、N&M はビットごとのAND)が最大になるものを見つけます。そして、得られた最大のgcdの値を返します。 例えば、入力が 20 の場合、出力は 31 になります。 解法のポイント この問題の鍵は、XORとANDのビットレベルでの性質にあります。あるビット位置において、N と M のビットが異なれば XOR では 1 になり、両方とも 1 のときにだけ AND が 1 になります。 N のビット長を k とすると、M として「N の各ビッ

  6. Pythonで線形時間O(n)にサイズ3の増加部分列を見つける方法

    問題の概要 N個の数値を含む配列が与えられたとき、b[i] < b[j] < b[k] かつ i < j < k を満たす3つの要素が存在するかどうかを、線形時間(O(n))で判定する方法を解説します。該当する組み合わせが複数ある場合は、そのうちのどれか1つを出力すれば構いません。 例えば、入力が [13, 12, 11, 6, 7, 3, 31] の場合、出力は [6, 7, 31] となります。 解決のためのアプローチ この問題は、「各要素の左側にもっと小さい値が存在するか」「各要素の右側にもっと大きい値が存在するか」を事前に計算しておくことで効率的に解けます。具

  7. Pythonで各文字が直後の文字より辞書順に大きくなる文字列を生成する方法

    問題の概要数値 n が与えられたとき、小文字のみで構成される長さ n+1 の文字列を作成することを考えます。条件は、任意の位置にある文字が、その直後の文字よりも辞書式順序(lexicographic order)で大きくなることです。たとえば、入力が 15 の場合、出力は次のようになります。ponmlkjihgfedcbaこの文字列では、先頭の「p」から末尾の「a」に向かって文字が辞書順に小さくなっていくため、すべての隣接する文字のペアで条件が満たされています。解決のためのアプローチ鍵となるのは、逆順に並べたアルファベット「zyxwvutsrqponmlkjihgfedcba」です。この文字列

  8. Pythonで文字列に含まれるすべての異なる回文部分文字列を検索する方法

    小文字のASCII文字のみで構成された文字列が与えられたとき、その中に含まれるすべての異なる連続する回文部分文字列を見つける問題について解説します。例えば、入力が bddaaa の場合、出力は次のようになります。[a, aa, aaa, b, d, dd]アルゴリズムの考え方この問題は、Manacher法を応用した手法を使うことで効率的に解くことができます。基本的なアイデアは、偶数長と奇数長の両方の回文を一度に扱うために、文字列の前後に異なる番兵文字(@ と #)を追加し、各位置における回文半径を行列に記録していくというものです。具体的な手順は以下の通りです。結果を格納するための辞書 m を用

  9. Pythonで配列から1つの要素を削除して「良い配列」になるインデックスをすべて見つける方法

    問題の概要 数値の配列 A が与えられたとき、i 番目の要素を削除した後に「良い配列(good array)」となるような、すべてのインデックスを見つける必要があります。ここでの条件は以下の通りです。 良い配列とは、配列内のある要素が、それ以外のすべての要素の合計と等しい配列のことです。 インデックスは 1 始まり(1-based)で表します。 たとえば、入力が [10, 4, 6, 2] の場合、出力は [1, 4] になります。 A[1](=10)を削除すると、配列は [4, 6, 2] となり、6 = 4 + 2 が成立するため良い配列です。 A[4](=2)を削除すると、配列は

  10. Pythonで文字列内のすべての回文部分文字列を検出する方法(その2)

    ある文字列が与えられたとき、その文字列に含まれるすべての回文部分文字列を抽出することを考えます。ここで重要なのは、同じ並びの部分文字列でも、位置が異なれば別々のものとして数えるという点です。たとえば「aa」が2箇所に出現する場合、それらは1つではなく2つの異なる部分文字列として扱います。例として、入力が「redivider」である場合を考えてみましょう。この場合の出力は次のようになります。[r, e, d, i, v, ivi, divid, edivide, redivider, i, d, e, r]アルゴリズムの考え方この問題は、中心拡張法(expand around center)の考

  11. Pythonで2次元行列内の0で埋められた長方形をすべて検出する方法

    はじめに本記事では、0と1のみで構成される2次元のバイナリ行列が与えられたとき、0で埋められたすべての長方形の開始座標と終了座標を見つけるアルゴリズムをPythonで実装する方法を解説します。前提条件として、各長方形は互いに分離しており、接触しないものとします。ただし、配列(行列)の境界には接していても構いません。また、要素が1つだけの長方形も存在しえます。問題の例たとえば、以下のような入力行列を考えてみましょう。10111011101111101100110110011011011101000011100011011101この場合、出力は次のようになります。各リストは [開始行, 開始列,

  12. Pythonで数値の各桁に対応する文字から生成できるすべての文字列を求める方法

    ここでは、1から9までの各数字が複数の文字に対応付けられた「文字マッピング」を扱います。次のようなマッピングを考えてみましょう。1 -> [A, B, C] 2 -> [D, E, F] 3 -> [G, H, I] 4 -> [J, K, L] 5 -> [M, N, O] 6 -> [P, Q, R] 7 -> [S, T, U] 8 -> [V, W, X] 9 -> [Y, Z]問題の概要ある数値が与えられたとき、その各桁をマッピング表内の対応する文字に置き換えて、生成されるすべての文字列を表示します。ただし、重要なルールとして同じ

  13. Pythonで配列内の要素を検索し、厳密に減少した後に増加するシーケンスを形成する方法

    正の数からなる配列が与えられたとき、「最初に厳密に減少するシーケンスが続き、その後に厳密に増加する整数のシーケンスが続く」という形状を作り出す転換点(要素)を見つける問題を考えてみましょう。この問題には以下の条件があります。各シーケンス(減少部分・増加部分)は最小長2以上である必要がある減少シーケンスの最後の値は、増加シーケンスの最初の値と一致すること例えば、入力が {5, 4, 3, 4} の場合、出力は 3 になります。{5, 4, 3} が厳密に減少しており、続いて {3, 4} が厳密に増加しているためです。解法のアプローチこの問題を解くために、以下の手順に従います。カウンター inc

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

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

  15. Pythonでマージソートの再帰呼び出しがちょうどk回になる配列を見つける方法

    問題の概要2つの整数 a と b が与えられたとき、[1, a] の範囲の値をすべて含み、再帰的なマージソート関数がちょうど b 回呼び出されるような配列を見つけることを考えます。例えば、入力が a = 10、b = 15 の場合、出力は次のようになります。[3, 1, 4, 6, 2, 8, 5, 9, 10, 7]解法のアプローチこの問題は、再帰関数を使って配列を構築しながら、要素の入れ替えによってマージソートの呼び出し回数を調整することで解けます。手順は以下の通りです。再帰関数 solve(left, right, array, b) を定義します。b < 1 または区間の幅が1(

  16. Pythonでビトニックシーケンスのビトニックポイントを二分探索で効率的に求める方法

    ビトニックシーケンス(Bitonic Sequence)とは、最初は厳密に増加し続け、ある一点を境にして厳密に減少していく数列のことです。この増加から減少へと切り替わる境界点のことを「ビトニックポイント」と呼びます。例えば、入力が [7, 8, 9, 12, 10, 6, 3, 2] の場合、数列は 12 まで増加し、その後減少に転じるため、出力は 12 となります。なお、単調増加のみ、または単調減少のみの数列にはビトニックポイントは存在しません。解法のアプローチビトニックポイントを線形探索で見つけると計算量は O(n) になりますが、数列の性質を利用すると二分探索によって O(log n)

  17. Pythonで2つの数の積が持つ「約数の最大個数」を求める方法

    本記事では、整数型の要素からなる配列が与えられたときに、配列内の2つの数を掛け合わせた積の中から、約数(因子)の個数が最も多いものを見つける方法を解説します。手順はシンプルで、まず配列内の数同士の組み合わせごとの積をすべて計算し、次にそれぞれの積について約数の個数を数え、その中で最大のものを求めます。 入力例と出力例 例1 arr = [3, 2, 10] 出力: 2つの数によって形成される約数の最大個数: 8 まず組み合わせごとの積を計算します:3 × 2 = 6、3 × 10 = 30、2 × 10 = 20 次に、それぞれの値の約数を列挙します:6 → 1, 2, 3, 6 / 3

  18. PythonのSymPyモジュール入門:記号数学ライブラリの基本と使い方

    SymPyは、Python向けの記号数学(シンボリック数学)ライブラリです。コードをできるだけシンプルに保ちながら、本格的なコンピュータ代数システム(CAS)となることを目標としており、そのため理解しやすく、機能の追加や拡張も容易に行える設計になっています。SymPyは完全にPythonで実装されており、依存関係は任意精度の浮動小数点演算を提供する純Pythonライブラリ「mpmath」のみです。この軽量な構成のおかげで、環境を選ばず手軽に導入できます。 SymPyモジュールのインストール SymPyはpipコマンドを使って簡単にインストールできます。 pip install sympy

  19. Pythonで特徴量スケーリングを適用する方法とタイミングを徹底解説

    特徴量スケーリング(フィーチャースケーリング)は、データ前処理の重要なステップの一つで、データの独立変数や特徴量に対して適用されます。データを特定の範囲内に正規化する役割を担います。なぜスケーリングが必要なのか?多くの場合、データセットには大きさ・単位・範囲が大きく異なる特徴量が含まれています。しかし、多くの機械学習アルゴリズムは計算過程で2つのデータポイント間のユークリッド距離を使用するため、これが問題となります。スケーリングを行わないまま放置すると、アルゴリズムは単位を無視して特徴量の大きさのみを考慮します。その結果、「5kg」と「5000g」のように単位が異なるだけで結果が大きく変わって

  20. PythonとKerasで作る画像分類モデル:CNNによる実装手順を完全解説

    画像分類とは 画像分類(Image Classification)とは、コンピュータビジョンにおける基本的なタスクの一つで、入力された画像をあらかじめ定義されたカテゴリへ自動的に振り分ける技術です。ディープラーニングを活用することで、高精度な画像分類モデルを比較的簡単に構築できます。 画像分類モデルを構築する主なアプローチとして、以下の2つの方法が挙げられます。 小規模なネットワークをスクラッチから学習させる — シンプルなタスクやデータセットが限られている場合に有効です。 VGG16など事前学習済みモデルの上位層をファインチューニングする — 転移学習によって、少ないデータでも高い精度を実

Total 8994 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:154/450  20-コンピューター/Page Goto:1 148 149 150 151 152 153 154 155 156 157 158 159 160