Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

scipy-best-practices

PythonにおけるSciPyを用いた科学技術計算、最適化、信号処理、統計解析のベストプラクティスを提供します。SciPyの各モジュールを効果的に活用するための推奨パターンや注意点を把握したい場合に役立ちます。

description の原文を見る

Best practices for SciPy scientific computing, optimization, signal processing, and statistical analysis in Python

SKILL.md 本文

SciPy ベストプラクティス

科学計算、最適化、信号処理、統計分析に焦点を当てた SciPy 開発の専門家向けガイドラインです。

コードスタイルと構造

  • SciPy の正確な例を含む簡潔で技術的な Python コードを書く
  • 数値精度と計算効率を優先する
  • 数学演算には関数型プログラミングパターンを使用する
  • 明示的なループより ベクトル化演算を推奨する
  • 科学的文脈を反映した説明的な変数名を使用する
  • PEP 8 スタイルガイドラインに従う

scipy.optimize - 最適化

  • 汎用最適化には scipy.optimize.minimize() を使用する
  • 問題の特性に基づいて適切なメソッドを選択する:
    • 'BFGS' は滑らかで制約なしの問題
    • 'L-BFGS-B' は有界問題
    • 'SLSQP' は制約付き最適化
    • 'Nelder-Mead' は微分不可能な関数
  • 収束を速めるため、勾配が利用可能な場合は提供する
  • 非線形最小二乗法フィッティングには scipy.optimize.curve_fit() を使用する
  • 方程式の根を求めるには scipy.optimize.root() を使用する

scipy.linalg - 線形代数

  • numpy.linalg より scipy.linalg を推奨する(追加機能がある)
  • 行列の逆行列計算の代わりに scipy.linalg.solve() を使用する
  • 構造化行列(帯状、三角形)用の特化したソルバーを活用する
  • 複数の右辺に対して scipy.linalg.lu_factor()lu_solve() を使用する
  • 大規模疎行列システムには scipy.sparse.linalg の疎行列ソルバーを使用する

scipy.stats - 統計

  • 確率計算には分布オブジェクトを使用する
  • 基本統計量には scipy.stats.describe() を活用する
  • 仮説検定関数を使用する:ttest_ind()chi2_contingency()mannwhitneyu()
  • 分布上の .rvs() メソッドで乱数サンプルを生成する
  • データからのパラメータ推定には .fit() を使用する

scipy.interpolate - 補間

  • 1D 補間には scipy.interpolate.interp1d() を使用する
  • 散布データ補間には scipy.interpolate.griddata() を使用する
  • 適切な補間メソッドを選択する:'linear'、'cubic'、'nearest'
  • 滑らかな補間には スプライン関数を使用する:UnivariateSplineBSpline
  • 正則グリッドデータには RegularGridInterpolator を検討する

scipy.integrate - 積分

  • 単一積分には scipy.integrate.quad() を使用する
  • 多重積分には scipy.integrate.dblquad()tplquad() を使用する
  • 常微分方程式には scipy.integrate.solve_ivp() を使用する
  • 適切な ODE メソッドを選択する:'RK45'、'BDF'、'LSODA'
  • 性能を改善するため、stiff システムにはヤコビアンを提供する

scipy.signal - 信号処理

  • フィルタ設計には scipy.signal.butter()cheby1()ellip() を使用する
  • ゼロ位相フィルタリングには scipy.signal.filtfilt() を使用してフィルタを適用する
  • パワースペクトル密度推定には scipy.signal.welch() を使用する
  • ピーク検出には scipy.signal.find_peaks() を使用する
  • 畳み込みには scipy.signal.convolve()correlate() を活用する

scipy.sparse - 疎行列

  • ユースケースに応じて適切な疎形式を使用する:
    • csr_matrix は効率的な行スライシングと行列ベクトル積
    • csc_matrix は効率的な列スライシング
    • coo_matrix は疎行列の構築
    • lil_matrix は段階的構築
  • 演算前に最適形式に変換する
  • 疎線形システムには scipy.sparse.linalg ソルバーを使用する

パフォーマンス最適化

  • 適切なデータ型を使用する(精度には float64、メモリには float32
  • SciPy を通じた BLAS/LAPACK を活用して最適化された線形代数を実現する
  • 可能な場合は配列を事前割り当てする
  • 利用可能な場合はインプレース演算を使用する

エラーハンドリングと検証

  • 最適化ルーチンの収束状態を確認する
  • 数値結果が妥当かどうかを検証する
  • 悪い条件付け問題を適切に処理する
  • 収束判定基準に適切な許容値を使用する

科学コードのテスト

  • 既知の解析解に対してテストする
  • 数値比較には np.testing.assert_allclose() を使用する
  • エッジケースと境界条件をテストする
  • 保存則と不変量を検証する

重要な規約

  • 特定のサブモジュールをインポートする:from scipy import optimize, stats, linalg
  • 変数と関数には snake_case を使用する
  • アルゴリズムの選択とパラメータを文書化する
  • 出力に収束診断を含める

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
mindrally
リポジトリ
mindrally/skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mindrally · mindrally/skills · ライセンス: Apache-2.0