pythonに関するuni745eのブックマーク (17)

  • Python:重み付きUnion-Find木について - あっとのTECH LOG

    今回は素集合データ構造であるUnion-Find木に重みを付けた、Weighted(重み付き) Union-Find木についてまとめます。 Union-Find木についてよくわからないという方は、 at274.hatenablog.com こちらを先に見ていただいた方がいいかと思います。 Weighted Union-Find木について Pythonによる実装 準備 検索(find) 併合(union) 完成形 Weighted Union-Find木について 実装前に、Weighted Union-Findがどんなものかざっくり説明しておきましょう。 まずはイメージ図を見てやってください。 特に深い説明はいらないかと思います。 イメージ図通りです。 例えば、「AさんはBさんより3歳年上。CさんはBさんより2つ下。ではAさんはCさんよりいくつ上?(もしくは下?)」みたいな問題に対して使えま

    Python:重み付きUnion-Find木について - あっとのTECH LOG
    uni745e
    uni745e 2018/10/21
    すごく参考になった。木のランク差に応じた重みの計算方法がわかりやすかった。
  • Pythonの知っておくと良い細かい処理速度の違い8個 - kumilog.net

    はじめに 標準入力 input と sys.stdin.readline ソート sort と sorted ソートの key ループ for と while リスト リストの初期化 二次元配列の場合 リストの値参照 リストへの値追加 それぞれの処理速度 まとめ はじめに 最近、PythonAtCoderなどの競技プログラミングに挑戦しています。これまであまりに気にしなかったけど、ちょっとした書き方で処理速度が変わってくることに気づいたので、これを気に少し調べてみました。 目次にあるように、標準入力、ソート、ループ、リストについて、計8個の処理の速度比較を行いました。処理速度の計測方法は、Mac Book Pro*1を使い、timeitでそれぞれ100回計測*2し、平均と標準偏差を求めています。 結果だけ知りたい方は、まとめへどうぞ。 計測に用いたコードは以下にあります。 github.

    Pythonの知っておくと良い細かい処理速度の違い8個 - kumilog.net
    uni745e
    uni745e 2018/10/13
    これは良記事。今日からreadline使います。
  • 1c29701fbfdad4e747e5

    @Morinikki様のPythonでREST APIをサクっと実装 を参考にさせていただき、GETを実装。 エンドポイントの作り方がわかったので、同様にPOST、PUT、DELETEを生やし、peeweeのドキュメントを読みながら実装しました。 # -*- coding: utf-8 -*- from flask import Flask, jsonify, abort, make_response, request import peewee as pe import random import json # ランダム文字列 def random_string(length, seq='0123456789abcdefghijklmnopqrstuvwxyz'): sr = random.SystemRandom() return ''.join([sr.choice(seq) for

    1c29701fbfdad4e747e5
    uni745e
    uni745e 2018/08/09
    python3 + flask + peewee + sqliteでAPIを実装
  • 機械学習ナイーブベイズ分類器のアルゴリズムを理解したのでメモ。そしてPythonで書いてみた。 - Qiita

    概要 ナイーブベイズ分類器(ベイジアンフィルター)のアルゴリズムを具体的な数値を使って説明します。また、Pythonで実装してみました。自分の勉強メモのつもりで書いたのですが、他の方の役にも立てたら嬉しいです。 ナイーブベイズ分類器って? あるデータ(文章)をどのカテゴリーに属するのかを判定させる、機械学習の教師あり学習の手法の一つです。 スパムメールフィルターやWEBニュース記事のカテゴライズによく使われています。 難易度 ベイズの定理を利用した単純な手法で、難易度は低です。 なるべく数式を使わないで説明してみました。 ナイーブベイズ分類器の計算 対象文章がどのカテゴリーに分類されるかを決めるための計算ロジックを、具体的な数値を使って説明します。 学習データが以下である場合、対象文章がどのカテゴリーに分類されるか計算します。 学習データ サッカー  [ ボール | スポーツ | ワールド

    機械学習ナイーブベイズ分類器のアルゴリズムを理解したのでメモ。そしてPythonで書いてみた。 - Qiita
  • Jupyter Notebook を使ってみよう

    ページでは、Jupyter Notebook の概要と基的な使い方について紹介します。 Jupyter Notebook とは Jupyter Notebook (読み方は「ジュパイター・ノートブック」または「ジュピター・ノートブック」) とは、ノートブックと呼ばれる形式で作成したプログラムを実行し、実行結果を記録しながら、データの分析作業を進めるためのツールです。 プログラムとその実行結果やその際のメモを簡単に作成、確認することができるため、自分自身の過去の作業内容の振り返りや、チームメンバーへ作業結果を共有する際に便利なほか、スクール形式での授業や研修などでの利用にも向いています。 このようなノートブック形式で分析作業を行うためのツールとしては、微分積分などの科学技術系計算ソフトウェアの Mathematica (マセマティカ) や Spark, Hadoop などの並列分散処理シ

    uni745e
    uni745e 2017/07/05
    Jupyter Notebookの使い方
  • Pythonのデコレータを理解するための12Step - Qiita

    古い記事なんですが, Pythonのデコレータの概念をつかむには良記事だったので和訳意訳してみました. http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/ Step1. 関数 これは基ですね. Pythonにおいて関数はdefキーワードにより関数名とパラメータのリスト(任意)とともに定義できます.また括弧付きで名前を指定することで実行できます. Step2. スコープ Pythonでは関数を作ると新しいスコープが作られます.言い方を変えるとそれぞれの関数がそれぞれに名前空間を持つということです. Pythonではこれらを確認することのできる組み込み関数も用意されていて, locals()で自身の持つローカルな名前空間の値を辞書形式で返却します.

    Pythonのデコレータを理解するための12Step - Qiita
    uni745e
    uni745e 2017/07/04
    デコレータについてはなんとなくわかったけど継承やそのまま関数にするのではいけないのか
  • GitHub - bakfoo/awesome-pysci

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - bakfoo/awesome-pysci
    uni745e
    uni745e 2016/09/22
    Pythonの学術系ライブラリまとめ
  • SciPy+matplotlibで3D散布図を作成(Python) - Qiita

    PythonでSciPy(NumPy)とmatplotlibを使って3D散布図を作成する方法です。 サンプルデータはiris.csvを使用(http://aima.cs.berkeley.edu/data/iris.csv) scipy.genformtxtメソッドで、csvファイルのデータを直接scipy.array形式で取り込むことができます。 scipy.array形式のデータは普通の配列として扱うことができ、さらにd[d[:,0] >= 7]のように簡単に条件に合うレコードを抽出することができます。複数の条件式を使用する場合はビット演算子で連結します。 グラフ描画の際にはscatter3Dメソッドが使えますが、データ数が多いと極端に重くなります。plotメソッドのほうが良いです。 (5/9追記)plotメソッドではデータの読み込み順にプロットが上書きされていくので、プロットが重なっ

    SciPy+matplotlibで3D散布図を作成(Python) - Qiita
  • Jupyter Notebook(IPython)のインストールと始め方 - TASK NOTES

    Jupyter のインストール方法と実行までの流れをまとめました。 Jupyter(IPython Notebook)とは 最近 Python を初めた方は、私もそうでしたが Jupyter と IPython Notebook の違いについて悩むことと思いますが結論から言うと同じです。元々が IPython Notebook という名前でしたが、最近では多言語の対応もしているため、Jupyter という名前に変更されています。 そもそも IPython とは強力なインタラクティブシェルであり、特に補完機能なんかはとても便利です。それをサーバーで立ち上げてブラウザ上で実行できるようにしたものが IPython Notebook になります。実行結果の画像をインラインで表示したり、履歴を保存しておくこともできますし、Markdownでテキストを表示することも可能です。簡単にトライアルアンドエ

    Jupyter Notebook(IPython)のインストールと始め方 - TASK NOTES
  • dictionaryのsetdefaultとget - kuma8の雑記帳

    先日の Django Hack-a-thon で、渋川さんの発表で setdefaultとgetが便利ですよねという発表があって、 ちゃんと押さえられてないなぁと思ったので軽くまとめてみた。 user_data = {} print user_data['user_name'] サンプルを実行させると、user_dataには、key:'user_name'が存在しないため KeyErrorの例外が発生してしまう。 例外を発生させたく無い場合は、事前に in や has_key (in と has_key は同じ結果を返す)で、 keyをチェックして、その後処理をするのですが。 user_data = {} # keyが存在するときだけ出力、そうでない場合は、空文字を if 'user_name' in user_data: print user_data['user_name'] else

    dictionaryのsetdefaultとget - kuma8の雑記帳
  • リストをn個ずつのサブリストに分割 (Python) - おぎろぐはてブロ

    愚直にやればもちろんできるんだけど、パフォーマンスが気になったり、かっこよく書きたいとか思うわけです。 >>> a = range(15) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>> [a[i:i+3] for i in range(0,15,3)] [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14]] range(0, 15, 3) が [0, 3, 6, 9, 12] に展開されて、スライスしていく感じ。 zip(*[iter(s)]*n) で n 個ずつ分割 探しているとこんなのがでてくる。 2. 組み込み関数 — Python 2.7ja1 documentation iterable の、左から右への評価順序が保証されます。そのため z

    リストをn個ずつのサブリストに分割 (Python) - おぎろぐはてブロ
  • NumPy でつくる俺々データ構造 - StatsFragments

    はじめに Python での数値計算の基盤をなす NumPy 、直感的なスライスやブロードキャスト、関数のベクトル適用など大変便利だ。 import numpy as np np.__version__ # '1.9.2' np.array([1, 2, 3]) # array([1, 2, 3]) np.array([1, 2, 3])[:2] # array([1, 2]) np.array([1, 2, 3]) + 1 # array([2, 3, 4]) が、用途によっては NumPy 標準ではその機能を実現できない場合がある。例えば、 配列とメタデータをひとつのクラスで扱いたい 配列への入力や型を制約/検証したい 自作クラスを NumPy の Universal Functions (ufunc) に対応させたい 新しい型 ( dtype ) を作りたい こういったとき、NumP

    NumPy でつくる俺々データ構造 - StatsFragments
  • はじめに — pep8-ja 1.0 ドキュメント

    X-Translator: Yoshinari Takaoka <reversethis -> gro tod umumum ta umumum> はじめに¶ この文書は Python の標準ライブラリに含まれているPythonコードのコーディング規約です。CPython に含まれるC言語のコードについては、対応するC言語のスタイルガイドを記した PEP を参照してください。 この文書と PEP 257 (Docstring 規約) は、Guido が書いたオリジナルのPythonスタイルガイドのエッセイと、 Barry のスタイルガイドに少し追記したものをまとめたものです。 [2] このスタイルガイドは、追加の規約が必要だとわかったり、Pythonの言語自体が変更されることで過去の規約が時代遅れになった時に徐々に改訂されてゆきます。 多くのプロジェクトには、自分たちのコーディングスタイル

    uni745e
    uni745e 2015/09/16
    コーディング規約(日本語約)
  • Pythonの基礎 ファイル(CSV)を読み込む編 - Pythonの学習の過程とか

    PythonCSVファイルを読み込んでみる テキストファイルに続き、CSVファイルを読み込んでみます。 CSVはカンマ区切りのテキストですから、テキストファイルと同じように読み込めばいいのですが、CSV用に便利なモジュールが用意されています。 その名もズバリ、"CSV" では公式ページの参考にして、簡単な例をあげてみましょう。 #今回のCSVの中身 カンマで区切ったデータです。 1,11,111,1111,11111 2,22,222,2222,22222 3,33,333,3333,33333 4,44,444,4444,44444 #coding:utf-8 import csv #csvモジュールをインポートする f = open('data.csv', 'rb') dataReader = csv.reader(f) for row in dataReader: print ro

    Pythonの基礎 ファイル(CSV)を読み込む編 - Pythonの学習の過程とか
    uni745e
    uni745e 2015/09/07
    CSVファイルを様々な方法で読み込む
  • 友利奈緒判定botを作った - kivantium活動日記

    TVアニメCharlotteのヒロイン友利奈緒がTwitter上で異常に増殖する怪現象が起こっています。 友利奈緒検出器、川奈プロが3秒で実装しそうなやつだ— Ararik (@fimbul11) September 2, 2015 と煽られたので実装しました。(3秒ではできませんでした) 遊び方 @mitra_sun22に画像つきのリプライを飛ばせば顔と判定した部分に白枠をつけた画像と判定結果を返信します。簡単ですね! ちなみに友利奈緒と判定された画像は筆者(@kivantium)のTwitterアイコンに設定されるようになっています。 要素技術 Twitterで煽られたので、Twitterで送られた画像から顔を検出してその顔が友利奈緒かどうか判断してリプライするという仕様にしました。 ほとんど過去の記事からコピペしただけでできました。 Twitterからの画像を処理する部分: Twit

    友利奈緒判定botを作った - kivantium活動日記
    uni745e
    uni745e 2015/09/04
    こういう検証は1人でやると地獄だし,皆が使える仕組みを作ることが大事なのか
  • Python2で競技プログラミングする時に知っておきたいtips(入出力編) - Qiita

    Python2で競技プログラミングする時に知っておきたいtipsの,入出力の部分を分割しました. Python競技プログラミングをする際の入出力手法について例示する. 入出力のコードは,言語を初修する際のハードルになることが多いが,一度覚えてしまえばワンパターンなのでさっさと覚えてしまいたい. Pythonのバージョンは2.7.5(Python3では,入出力などの仕様が大きく異なるので,他の記事を参照することをおすすめします). 参考 標準入力の受け取りのその1 - Qiita 1行に文字列1つの入力 形式

    Python2で競技プログラミングする時に知っておきたいtips(入出力編) - Qiita
    uni745e
    uni745e 2015/09/03
    paiza解いててお世話になった
  • Python-izm

    プログラミング言語Pythonの習得を目的としたサイト、Python-izmです。 入門編、基礎編、応用編などカテゴリ分けされていますが、すでにPythonの基構文、実行方法等を習得されている方は入門編を飛ばしてご利用ください。これからPythonを学習する、という方は入門編 – Pythonとはより順にご利用ください。またサイトは主にPython 3系を用いていますが、3系と比較して大きく異なる場合は Python 2系のコードも掲載しています。バージョン2系と3系の違いは2系と3系の違いを参照してください。 お知らせ 2018/01 サイトのリニューアルに伴い、Python 3系への対応、SSL化を行いました。今後ともPython-izmを宜しくお願い致します。 Pickupコンテンツ 各プログラミング言語の実行までの手順をまとめました。Pythonは他の言語と比較しても容易に実行

    Python-izm
    uni745e
    uni745e 2015/08/24
    基本的なものはだいたい載ってる
  • 1