Python

 Computer >> コンピューター >  >> プログラミング >> Python
  1. Matplotlib/Seabornでカウントプロットのバー上部にカウント値を表示する方法

    Seabornのcountplot(カウントプロット)で、各バーの上部にカウント値(度数)を表示する方法を解説します。カテゴリごとのデータ件数をひと目で把握できるようになるため、レポートやダッシュボード作成時に非常に便利なテクニックです。 実装手順 plt.rcParamsを使って図のサイズを設定し、サブプロット間・周囲のパディングを自動調整します。 1列だけのデータを持つPandasデータフレームを作成します。 カウントプロットは、量的変数ではなくカテゴリ変数に対するヒストグラムのようなものと考えることができます。ここではsns.countplot()を使って描画します。 カウントプロット

  2. Pythonで3DプロットをPDFとして保存する方法

    Pythonで3DプロットをPDF形式で保存したい場合、Matplotlibのsavefig()メソッドを使えば簡単に実現できます。以下の手順に従ってください。 手順 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。 新しい図(figure)を作成するか、既存の図をアクティブにします。 サブプロット配置の一部として、図に「ax」(3D軸)を追加します。 NumPyを使って u, v, x, y, z のデータポイントを生成します。 3Dワイヤーフレームをプロットします。 プロットにタイトルを設定します。 savefig() メソッドで現在の図をPDFとして保存

  3. Matplotlibで曲線の条件に応じたシェーディング領域を作成する方法

    Matplotlibでは、BrokenBarHCollection.span_where()を使うことで、曲線の値が特定の条件を満たす区間だけを自動的に塗りつぶすことができます。この記事では、正弦波の正の部分を緑色、負の部分を赤色で塗り分ける具体例を通して、その実装手順を解説します。実装の手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使って t、s1、s2 のデータポイントを生成します。図とサブプロットのセットを作成します。t と s1 のデータをプロットし、軸全体に渡る水平線を追加します。yrange(y方向の範囲)にまたがる水平バーのコレクシ

  4. Seabornヒートマップの軸の目盛り(目盛線)を削除する方法

    Seabornで作成したヒートマップから、軸の目盛り(目盛線)を削除したいケースはよくあります。ラベルだけを残してスッキリした見た目にしたい場合に便利です。ここでは、tick_params()メソッドを使って目盛りを非表示にする手順を解説します。実装の手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を自動調整します。NumPyを使って4×4次元のランダムなデータポイントを作成します。sns.heatmap()でデータを色分けされた行列として描画します。tick_params()メソッドを使用し、left=Falseとbottom=Falseを指定することで、左側・下側の目盛

  5. plt.show()はいつ必要?いつ不要?fig.show()との違いを解説

    Matplotlibでグラフを表示するとき、「plt.show()」と「fig.show()」のどちらを使えばよいのか迷ったことはありませんか。結論から言うと、対話モード(インタラクティブモード)が有効でない場合はplt.show()を使用し、対話モードが有効な環境ではfig.show()を使うことですべての図(フィギュア)を表示できます。ここでは、実際のコード例を通して両者の違いを確認してみましょう。検証の手順iPythonシェルを起動します。図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。新しい図を作成するか、既存の図をアクティブにします。plot()メソッド

  6. Pythonで挿入ソート時に必要なシフト(移動)回数を求めるプログラム

    配列が与えられ、それに対して挿入ソートを実行することを考えてみましょう。挿入ソートでは、配列内の各要素を順番に取り出し、正しい位置まで移動(シフト)させていきます。この記事では、配列をソートし終えるまでに必要なシフトの総数を求めるプログラムを紹介します。シフトの総数は整数値となり、すでにソート済みの配列に対しては 0 を返します。 たとえば、入力が input_array = [4, 5, 3, 1, 2] の場合、出力は 8 になります。 [4, 5, 3, 1, 2] → 0 シフト [4, 5, 3, 1, 2] → 0 シフト [3, 4, 5, 1, 2] → 2 シフト [

  7. Pythonで2つの文字列から辞書順に最小の文字列を作成するプログラム

    問題の概要2つの文字列が与えられたとき、それらを組み合わせて辞書順(字句順)で最小の文字列を作成することを考えます。作成の手順は次の通りです。まず2つの文字列の先頭の文字同士を比較します。辞書順で小さい方の文字を取り出し、結果の文字列に追加します。両方の文字が同じ場合(同点の場合)は、最初の文字列側から取り出します。この操作を両方の文字列が空になるまで繰り返し、構築された最小の文字列を返します。具体例入力が input_1 = TUTORIALS、input_2 = POINT の場合、出力は POINTTUTORIALS になります。2つの文字列を比較すると、処理は次のように段階的に進みます

  8. Pythonで各クエリに対する類似部分文字列の数をカウントするプログラム

    2つの文字列 s とクエリの集合 Q が与えられているとします。Q[i] はペア (l, r) を含んでおり、s の l 番目から r 番目までの各部分文字列について、それと「類似している」s の x から y までの部分文字列の個数を求める必要があります。 類似した文字列の定義 2つの文字列 s と t が「類似している」とは、以下の条件を満たす場合を指します。 両者の長さが同じである 任意のインデックスのペア (i, j) について、s[i] と s[j] が等しいならば t[i] = t[j] が成り立ち、逆に s[i] と s[j] が異なるならば t[i] と t[j] も異なる

  9. Pythonで文字列の指定範囲ごとに異なる部分文字列の数を求めるプログラム

    長さ n の文字列 s と、クエリのリスト Q が与えられます。各クエリ Q[i] はペア (l, r) を含んでおり、文字列 s のインデックス l から r まで(両端を含む)の範囲に存在する異なる部分文字列の数を数える必要があります。 たとえば、入力が s = pptpp、Q = [(1,1), (1,4), (1,1), (0,2)] の場合、出力は [1, 8, 1, 5] になります。その理由は次の通りです。 クエリ (1, 1) の場合:範囲内の部分文字列は「p」のみなので、出力は 1 クエリ (1, 4) の場合:部分文字列は「p」「t」「pp」「pt」「tp」「ptp」「t

  10. Pythonで目標の5つ星レビュー率に達するために必要な追加レビュー数を計算する方法

    リスト reviews としきい値 t があるとします。reviews[i] の各要素は [x, y] という形式で表され、これは製品 i が x 件の5つ星評価と y 件のレビューを受け取っていることを意味します。ここでの課題は、レビュー全体に占める5つ星レビューの割合が少なくとも t % になるようにするために、追加で必要となる5つ星レビューの最小件数を求めることです。 たとえば、入力が reviews = [[3, 4], [1, 2], [4, 6]]、threshold = 78 である場合を考えてみましょう。このとき出力は 7 になります。現時点では5つ星レビューが合計8件、レビ

  11. Pythonで数字のリスト形式の数値に1を加算する方法【サンプルコード付き】

    問題の概要 ここでは、「nums」という名前の配列があるとします。この配列には、ある数値の各桁(10進数)が要素として格納されています。たとえば、[2, 5, 6] という配列は数値 256 を表します。この数値に 1 を加算し、結果を同じリスト形式で返すことが求められます。 たとえば、入力が nums = [2, 6, 9] の場合、269 に 1 を足した 270 を表す [2, 7, 0] が出力されます。 解決のアプローチ この問題は、リストの末尾(最下位の桁)から順に処理していくことで解決できます。具体的な手順は以下の通りです。 変数 i に「nums のサイズ − 1」を代入す

  12. Pythonでリストの合計を目標値に一致させるために必要な最小の要素追加回数を求めるプログラム

    問題の概要 数値のリスト nums と、2つの変数 k、t(ターゲット値)が与えられます。ここで「範囲 [-k, k] 内から任意の数 e を選び、リスト nums の末尾に追加する」という操作を考えます。この操作を繰り返して nums の合計をターゲット値 t と一致させるとき、必要となる最小の操作回数を求めるのがこの問題の目的です。 例えば、nums = [3, 1]、k = 4、t = 19 という入力の場合、出力は 4 になります。これは [4, 4, 4, 3] の順に要素を追加することで、合計が 3 + 1 + 4 + 4 + 4 + 3 = 19 となり、目標に到達できるためです

  13. 【Python】配列を等差数列に並べ替えられるかどうかを判定するプログラムの書き方

    問題の概要整数のリスト nums が与えられたとき、その要素を並べ替えることで「隣り合う2つの要素の差がすべて等しい」状態(つまり等差数列)にできるかどうかを判定するプログラムを作成します。例えば、入力が nums = [8, 2, 6, 4] の場合、出力は True になります。これは、リストを [2, 4, 6, 8] のように並べ替えると、隣接する要素同士の差がすべて 2 で一定になるためです。解法のアプローチこの問題は非常にシンプルな考え方で解決できます。ポイントは「並べ替え方が自由」であることです。もし条件を満たす並べ方が存在するなら、昇順にソートした順序が必ずその一つになります。

  14. Pythonで部分配列の合計をmで割った余りの最大値を求めるプログラム

    問題の概要 n個の要素からなる配列 nums と整数 m が与えられたとき、任意の部分配列(連続する要素の集合)の合計を m で割った余りの最大値を求めることを考えます。 たとえば、nums = [1,5,7,3]、m = 5 が入力として与えられた場合、出力は 3 になります。すべての部分配列について余りを計算すると、次のようになります。 [1] mod 5 = 1 [5] mod 5 = 0 [7] mod 5 = 2 [3] mod 5 = 3 [1,5] mod 5 = 1 [5,7] mod 5 = 2 [7,3] mod 5 = 0 [1,5,7] mod 5 = 3 [5,7,

  15. Pythonで英数字文字列内の数字の合計を求めるプログラム

    「0」から「9」までの数字と小文字の英字で構成される英数字の文字列 s があるとします。このとき、s に含まれる数値の合計を求める必要があります。ただし、数字が連続している場合は、それらを1つの数値として扱うものとします。 例えば、入力が s = hello25world63power86 の場合、出力は 174 になります。これは 25 + 63 + 86 = 174 となるためです。 解決のアプローチ この問題を解くために、以下の手順に従います。 ret := 0、curr := 0 として初期化します 文字列 s 内の各文字 ch について、次の処理を行います ch が数字の場合

  16. Pythonで加速度をもとに3D空間上の2つの球が衝突するかどうかを判定するプログラム

    半径 r1 と r2 の2つの球が3次元空間上にあると仮定します。それぞれの球の中心は座標 (x1, y1, z1) と (x2, y2, z2) にあり、加速度は (ax1, ay1, az1) と (ax2, ay2, az2) として与えられています。このとき、2つの球が与えられた加速度で動き続けた場合、将来のある時点で出会う(衝突する)ことがあるかどうかを判定するプログラムを作成します。 たとえば、入力が r1 = 1、r2 = 2、pos1 = (0, 0, 0)、acc1 = (100, 0, 0)、pos2 = (4, 0, 0)、acc2 = (0, 0, 0) のような場合、

  17. Pythonでsqrt関数を使わずに数が完全平方数かどうかを判定するプログラム

    ある整数 n が与えられたとき、n が完全平方数(perfect square)かどうかを判定する問題を考えます。完全平方数とは、ある整数 a を用いて k = a × a と表せる数のことです。この問題は、Pythonの組み込み平方根関数(math.sqrt など)を一切使わずに解く必要があります。例えば、入力が n = 121 の場合、121 = 11 × 11 と表せるため、出力は True になります。解き方のアプローチ:二分探索平方根関数を使わずに判定するには、二分探索(バイナリサーチ)を活用するのが効率的です。候補となる数の範囲を半分ずつ絞り込んでいくことで、高速に答えを見つけられ

  18. Pythonで数値が2の累乗かどうかを判定する方法

    はじめに ある数値 n が与えられたとき、その数値が2の累乗であるかどうかを判定する問題について解説します。 例えば、入力が n = 2048 の場合、2048は 211 に等しいため、出力は True となります。 解法のアプローチ この問題は、ビット演算を使うことで効率的に解くことができます。手順は以下の通りです。 n が 0 と等しい場合は False を返します。 (n AND (n - 1)) の計算結果が 0 と等しい場合は True を、そうでない場合は False を返します。 この手法が機能する理由は、2の累乗を二進数で表すと「1000…0」のように最上位ビットのみが1

  19. Pythonで文字列の各インデックスから文字cまでの最短距離を求めるリストを作る方法

    問題の概要 文字列 s と文字 c が与えられます(c は必ず s 内に存在するものとします)。ここで、s と同じ長さのリストを作成し、その各インデックス i の値を「s[i] から最も近い c までの距離」に設定します。 たとえば、入力が s = ppqppq、c = q の場合、出力は [2, 1, 0, 1, 1, 0] となります。 出力の内訳 インデックス 0(p):最寄りの「q」はインデックス 2 → 距離 2 インデックス 1(p):最寄りの「q」はインデックス 2 → 距離 1 インデックス 2(q):自身が「q」→ 距離 0 インデックス 3(p):最寄りの「q」はインデッ

  20. Pythonで等差数列から欠落した項を見つけるプログラム

    配列 nums には、ある等差数列の n−1 個の項が格納されているとします。この配列では、先頭または末尾以外の要素が1つだけ事前に削除されています。ここでの課題は、その削除された数値を見つけることです。 たとえば、入力が nums = [5, 7, 11, 13] の場合、出力は 9 になります。これは、各項が「2i+5」という式に従っており、i = 2 のとき 2×2 + 5 = 9 となる項が欠落しているためです。 解決のためのアプローチ この問題は、二分探索(バイナリサーチ)の考え方を応用することで効率的に解けます。等差数列では各項が「初項 + 公差 × インデックス」で表せるため、

Total 8994 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:368/450  20-コンピューター/Page Goto:1 362 363 364 365 366 367 368 369 370 371 372 373 374