2016/2/4 「ソフトウェアジャパン ビッグデータ活用実務フォーラム」でのプレゼン資料です。 主にPythonで書いたコードの高速化の話です。タイトルと中身がマッチしない感じがするのは自覚しています。
2016/2/4 「ソフトウェアジャパン ビッグデータ活用実務フォーラム」でのプレゼン資料です。 主にPythonで書いたコードの高速化の話です。タイトルと中身がマッチしない感じがするのは自覚しています。
$k$は定数で、だいたい0.04~0.06くらいです。Rの値によって以下のように分類できます。 Rが大きい: corner Rが小さい: flat R < 0: edge 図にすると、以下のようになります。 CSE/EE486 Computer Vision I, Lecture 06, Corner Detection, p22 これで手早くcornerを検出できるようになりました。ここで、corner検出についてまとめておきます。 cornerは複数のedgeが集まる箇所と定義できる 変化量をまとめた行列の固有ベクトルからedgeの向き、固有値の大きさから変化量の大きさ(edgeらしさ)がわかる 2つの固有値の値を基に、edge、corner、flatを判定できる 固有値の計算は手間であるため、判定式を利用し計算を簡略化する なお、Harrisはedgeの向きである固有ベクトルを考慮す
速い Python 実装といえば PyPy が有名ですが、 Python 3 へのキャッチアップが遅い、 CPython が持っている Python/C API のサポートがまだ弱く遅い、などの欠点があります。 また、 Google の1年プロジェクトだった Unladen Swallow もありました。これは CPython をフォークして LLVM で JIT を実装するものでした。この fork 実装は終わりましたが、この時期まだ不安定だったLLVMへの貢献は大きく、(ちゃんとおってないので憶測ですが)現代LLVMを利用したJITを実装しているプロジェクトは全部間接的に Unladen Swallow の成果の上に成り立っていると言えるかもしれません。 終了した JIT プロジェクトといえば、 psyco もありました。これはベタに CPython の JIT を実装していましたが、
(訳注:2016/3/9、いただいたフィードバックを元に記事を修正いたしました。) 注意: この記事で書かれている機能は、大部分がPython 3.4で導入されたものです。ネイティブコルーチンとasync/await構文はPython 3.5でサポートされました。そのため、本記事に記載されているコードを試す場合はPython 3.5の利用をお勧めします。 ジェネレータは値を 生成する 関数です。普通、関数は return で値を返したあと、その下層のスコープは破棄します。関数を再度呼び出す場合、その関数はゼロから起動されることになります。つまり1回限りの実行となります。しかしジェネレータ関数は値を yield で返し、関数の実行を一時停止します。その後、関数を呼び出したスコープにコントロールが移ります。関数を再び呼び出して次の値を(存在すれば)得たい時は、実行を再開することができます。では
「ほとんどの状況への対処について、一つの正しいやり方にフォーカスする」言語であるPythonですが、その文字列フォーマットは非常に悩ましく、また年々、多様化が進んでいます。 Python 3.6 では、文字列をフォーマットする方法には3通りあります(簡単な結合や string.Template の使用を除きます)。 %演算子 str.format関数 文字列の補完 (もし、この記事を全部読むつもりがないようであれば、 2016年2月に開催されるPyGrazの会合 に関する記事で、追加の例を含めてもう少し幅広くご紹介したいと思います) %形式の文字列フォーマット %形式は、少なくとも1.0バージョンからPythonに組み込まれているフォーマットです。Python 3以前のバージョンから使用している方には馴染みがあるでしょう。 多少の相違はあるものの、これはC言語の sprintf と同等の関
12月、私は PuPPy(the Puget Sound Python users group)の会合でQ&A セッション を行いました。そこでようやくPython 3が誕生した理由と、string/bytesに関する全てを説明しました。Python 3が作られた理由をユーザはもう知っているはずだと思っていたので、私はこの説明で称賛を得たことに、ちょっと驚きました。後で考えてみると、Pythonに詳しい人もそうでない人も含めて大多数の人が、その理由を探すように言われたり、好奇心からその理由を探し当てられるなどと考えた私が愚かでした。ですから、このブログの記事で、Python 3が存在する理由をわかりやすく説明します。後方互換性の全くない unicode / str / bytes の仕様変更は、Python 3のコードの移植の中でも本当に難解な部分ですので、私たちがその仕様変更を選択した理
最近、このモジュールを妻に紹介したところ、そのシンプルさと実用性に驚いていました。 joblib joblibの存在は以前から知ってはいたものの、実際のところはよく理解しておらず、いろいろな機能を寄せ集めたようなモジュールだと思っていました。まあ、その印象は今もあまり変わりませんが、実は非常に便利なモジュールだったのです。私は Flowminder の同僚から再度joblibを勧められて、このモジュールをデータ分析用のコードに幅広く使用しました。では、その機能について紹介しましょう。joblibは大きく分けて、 キャッシング 、 並列化 、 永続化 (データの保存と読み込み)の3つの機能から成ります。実を言うと、私はまだ並列プログラミングの機能は使ったことがないのですが、あとの2つの機能は頻繁に使ってきました。 キャッシング機能とは、シンプルなデコレータを使って、関数を簡単に”メモ化”する
マルコフ連鎖による文章自動生成 ちょっと文章の自動生成に興味が湧いたので、試してみることにしました。まずは事前調査したところ、既にやっている例がたくさんみつかりました。記事末の参考リンクにまとめましたので興味ある方は参照ください。Deep Learningやマルコフ連鎖を使うのがトレンド(?)のようです。本当はDeep Learningでやってみたかったのですが、何度か環境変えてチャレンジしたのですが、悉くエラーが出て失敗したため(chainerのバージョンアップの影響?)、諦めてマルコフ連鎖で実現することにしました。マルコフ連鎖に関してはここでは詳細は説明しませんので、興味ある方は自分で調べてみて下さい。自分もちゃんと理解できませんでした。イメージ的には、元となる文章の文章の流れのようなものを解析して、その解析した流れを元に、ある単語から順番に連想ゲームのように単語を並べていって文章を生
皆さんこんにちは お元気ですか。私は元気です。 今日はPythonにおける便利記法を書いてみます。 他の言語しか使ったこと無い人もぜひ ※1/25間違いかと思われる箇所の加筆修正を実施 リストに関するイテレーション enumerate(インデックスとオブジェクトのループ) zip(同時に2つのオブジェクトでループ) yield(途中で一旦返す) for-else(forで途中で停止しない場合の条件) リスト内包表記 Collections Counter default dict(辞書のデフォルト値設定) Sort(ソート) sorted if文の書き方 Fileに関する処理(with) in(オブジェクトに存在しているかどうか) 関数について 返り値を複数返す。 関数のオブジェクト化 参考文献 リストに関するイテレーション enumerate(インデックスとオブジェクトのループ) enu
Welcome! Use the navigation menu at the top to find the various tutorials and tips. Support I setup a Patreon page and a Paypal link, just in case you feel like buying me a coffee or beer (or both). New Users If this is your first time here, head to HoudiniGettingStarted. If you're after something specific, use the menu's across the top of the page. About CGWiki Oh Hai! I'm currently Senior Tec
Photo by photobom こんにちは。谷口です。 プログラミングをこれから学ぼうとしている方や、これから研修や実務に入る新人ITエンジニアの皆さんの中には「Pythonを学習したい」という方も多くいらっしゃるかと思います。 Pythonは1990年代前半からオランダ人のグイド・ヴァンロッサムによって開発されたオブジェクト指向スクリプト言語です。 Pythonは文法が必要最小限に抑えられており、ITエンジニアの学習の負担が軽減された開発言語と言われています。 海外では、近年Pythonによる開発が急速に増加しており、各種モジュール等が充実しています。Googleの開発に置けるメインのスクリプト言語ともされています。 日本国内でも、読みやすさ(=保守性)を重視する企業や、スマートフォンのバックエンド等では積極的に取り入れる企業が増加してきており、これからの一層の普及が期待される言語で
Pythonista is a complete development environment for writing Python™ scripts on your iPad or iPhone. Lots of examples are included — from games and animations to plotting, image manipulation, custom user interfaces, and automation scripts. In addition to the powerful standard library, Pythonista provides extensive support for interacting with native iOS features, like contacts, reminders, photos,
今回はマルチスレッドについて扱います。マルチスレッドは、簡単に言ってしまえば複数の処理を「並列」に進めることができるものです。マルチスレッドの反対がシングルスレッドであり、これは複数の処理を順番に進めていくものです。逆に言えば、ある処理が終わるまでは次の処理を実施することはできません。マルチスレッドおよびシングルスレッドの“スレッド”は「プログラムの実行単位」のことで、名前からわかるようにマルチスレッドはプログラムをマルチな実行単位で実行します。 今回の流れとしては、まず最初にプログラムの実行時間の測定手法について学びます。これを理解していないとマルチスレッドを使った高速化がどれほど効果的なものか理解しづらいためです。次にさまざまな処理にかかる遅延がどれほどのものかについて学びます。それらの基礎ができたうえで、シングルスレッドの問題点について、その次にマルチスレッドがどのようにその問題を克
前回はマルチスレッドの概念の簡単な説明とともに、速度の測定方法とマルチスレッドの簡単な利用方法について学びました。今回はその発展として、継承によるマルチスレッド向けのクラスの作成やロックを使ったスレッド間の同期、マルチスレッド以外の並列化手法といった内容を扱います。 継承によるマルチスレッドの実現 前回はthredingモジュールのThreadクラスのコンストラクタにマルチスレッド化したい関数とその引数を渡すという形でマルチスレッドを実現しました。 このほかにもThreadクラス自体を継承することでマルチスレッドとして動作させるクラスを作成して使うこともできます。それほど複雑ではないので、まずはコードを見てみましょう。 import threading, time # Class definition class MyThread(threading.Thread): def __init
Verified details These details have been verified by PyPI Project links Changelog Homepage Issues Source Owner JSON Schema GitHub Statistics Unverified details These details have not been verified by PyPI Project links Documentation Funding Tidelift Meta License Expression: MIT SPDX License Expression Author: Julian Berman Tags data validation , json , json schema , jsonschema , validation Require
Pythonで、COM(ActiveX)を操作する際は、win32com下のクラスを使う事になります。 この時、ActiveXの中でタイプライブラリとして定義している定数値を使えると、コードの可読性が良くなって便利です。 Pythonの場合、win32com.client.constants 下に、定数値が列挙されるようになっていますが、makepyツールを使って予めタイプライブラリ情報をPythonに教えておく必要があります。 それは、以下のWeb siteの記述にも書かれています。 Rubyist Magazine - Win32OLE 活用法 【第 7 回】 ほかの言語での COM http://jp.rubyist.net/magazine/?0009-Win32OLE Python では、タイプライブラリで定義された定数を利用できます。 Ruby では、指定したモジュール内に定義
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く