はじめに この記事では,コサイン類似度の概要から,複数のベクトル群同士のコサイン類似度を一気に算出する方法をpythonコードを用いて解説します. コサイン類似度とは コサイン類似度を一言で表すと「2つのベクトルがどの程度似ているかを表す尺度」です.この尺度は,2つのベクトルの内積を2つのベクトルの大きさ(L2ノルム)で割ることによって計算できます. コサイン類似度は,-1~1の範囲に正規化され,その値によって以下のように解釈が異なります. 1なら「2つのベクトルの成す角度が0度 → 同じ向きのベクトル → 完全に似ている」 0なら「2つのベクトルの成す角度が90度 → 独立・直行したベクトル → 似ている/似ていないのどちらにも無関係」 -1なら「2つのベクトルの成す角度が180度 → 反対向きのベクトル → 完全に似ていない」 2つのベクトルの大きさにかかわらず,2つのベクトルの向きが
今年も、Pythonのメジャーリリースの季節がやってまいりました。2022年10月3日にリリース予定となっているPython 3.11の新機能を紹介します。 CPython 高速化計画¶Python 3.11で最大のニュースは、なんと言っても Faster CPython: CPython 高速化計画 が開始されたことでしょう。 CPython 高速化計画は、Mark Shannon氏が提案したプランに基づいてPythonの高速化を行うもので、Pythonを毎年50%高速化し、互換性を保ちつつ 4年間で5倍高速化する ことを目標としています。 この計画はMicrosoft社の出資を獲得し、Pythonの父であるGuido van Rossum氏も加わって開発が進められています。 ベンチマーク¶さて、CPython 高速化計画最初のリリースとなるPython 3.11では、どの程度の高速化が
カフェチームの山本です。 前回の記事では、クラウド上で動画を処理するために、エッジデバイスから動画ファイルを送信する方法として、Pythonのプログラムを実装しました。(ここでは、予め動画ファイルが作成されていることが前提となっていました) 【Kinesis Video Streams】Pythonで動画ファイルを送信する 今回は、カメラで撮影した映像をすぐに送信するケースを考えます。送信する動画ファイルを作成するまでの時間(遅延)を短縮するために、撮影した画像をリアルタイムにエンコードする方法を調べました。この記事では、FFmpegを使用する方法を記載します。 実装したコード 早速結論ですが、以下のようなコードを実装することで、リアルタイムにエンコードできました。 video_writer.py from enum import Enum def video_filepath(devic
こんにちは、CX事業本部の夏目です。 LambdaでAWSリソースへアクセスする際に直列的に処理するのではなく、並列的に処理したいことは度々あります。 NodeだとPromiseを使えば簡単にできるのですが、Pythonではどうやるのか気になったので調べてみました。 注意 ここではPython3.5以降を使うことを想定して書いてます。 asyncio モジュール Pythonではasyncioモジュールを使って並列的に処理を書くことができます。 超ざっくり言うと、イベントループを使ってコルーチンを実行しているようです。 それ以上の説明は下記記事を見てください。 Pythonの非同期通信(asyncioモジュール)入門を書きました - ゆくゆくは有へと 非同期処理のことから知らない人向けに Python くらいしかろくに知らない人間が書きました。せっかくキーワードが文法に組み込まれたんだから
Pythonで数値計算を行なうためのライブラリであるNumPyでは、多次元配列を基本的なデータ構造として操作します。この独自のデータ構造を「ndarray」といい、知っておくことでデータ処理の際に高速化や省メモリ化したコードを書けるようになります。今回は『現場で使える!NumPyデータ処理入門』(翔泳社)からndarrayの基礎を紹介します。 本記事は『現場で使える!NumPyデータ処理入門 機械学習・データサイエンスで役立つ高速処理手法』の一部を抜粋し、掲載にあたって編集したものです。 NumPyとは NumPyは、Numerical Pythonの略称で、Pythonの数値計算のためのライブラリです。高速に数値計算ができることが特徴です。 NumPyで使われる主なクラスはnp.ndarrayと呼ばれる多次元を扱う配列です。NumPy配列は、公式ドキュメントでは単に配列と称されることが多
社内サーバーの状況は、zabbixである程度管理出来るようになったんですが、ちょっと不安になってきたのがバックアップです。 開発用サーバーも含めてmysqlが色々なところで立ち上がっているのですが、このバックアップを楽に出来ないものか、と。 要件的には、 mysqldumpを各サーバーで行う リモートでmysqldumpを行うのではなく、各サーバーでdumpし、出力ファイルを回収する形で。リモート接続を許可していないmysqlもあるので。 各サーバーでdumpしたsqlファイルをまとめて、圧縮して固めておく 圧縮したバックアップは数日間、履歴管理出来るようにする(10日間ぐらい) 対象となるサーバーのリストは簡単に更新出来るようにする 各サーバーにログインする必要がありそうなので、fabricの出番です。 問題は履歴管理。 logrotate等色々とやり方があると思うのですが、練習がてらj
I am running python within a virtual environment wrapper and I try to import UUID. Here is the trace of what I receive : python -v >>> import uuid # /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/site-packages/uuid.pyc matches /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/site-packages/uuid.py import uuid # precompiled from /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/si
pythonにはpep8という有名なコーディングスタイルがあります。 なるべくこれにあわせてコードを書くように推奨されます。 そして、pep8のスタイルにあっているかチェックするためのコマンドもpypiのパッケージとして公開されています。 pep8 1.3.3 : Python Package Index まず、pep8のインストール。 % pip install pep8 適当に書いたスクリプトに対してpep8コマンドを実行するとこんな感じで pep8に合わないコードが大量にエラーとして出力されますよね。 % pep8 some_daemon.py some_daemon.py:14:1: E302 expected 2 blank lines, found 1 some_daemon.py:21:4: E121 continuation line indentation is not
Pythonにはじめて触って、いつのまにか1年が過ぎたのですが、一番はまったのは、やっぱりunicodeの扱いだったと思います。 特に、 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12: ordinal not in range(128) のようなエラーにはさんざん悩まされました。ここがたとえばrubyなど他の言語と比べてわかりにくいために、Pythonが取っつきにくい言語になっているのではないか、と個人的には思います。 そこで、このエラーに関係するはまりどころとTipsをいくつか列挙してみました。これからPythonに触れられる方の参考になればと思います。 なお、環境はUNIX上のPython 2.4, 2.5を想定しています。 u1はunicode型で、s1はstr型です。s1にどのよ
そこまでおっしゃるなら、というわけで書いたのが以下。 #!/usr/bin/env python3.2 # -*- coding: utf-8 -*- import sys, os if 'PYTHONIOENCODING' in os.environ: for line in sys.stdin: chars = list(line.rstrip()) print('☆'.join(chars)) else: os.environ['PYTHONIOENCODING'] = 'UTF-8' sys.argv.insert(0, sys.executable) os.execvp(sys.argv[0], sys.argv) …強引さが増してるぞおいwllevalのようなsandbox環境では余計動かないしww http://blog.livedoor.jp/dankogai/archiv
jedi.vim をアップデートしたら以下の様な警告が表示された。 jedi-vim/jedi/jedi/api.py:209: DeprecationWarning: Use completions instead. warnings.warn("Use completions instead.", DeprecationWarning)補完自体は出来るが警告が気になったのでソースを追ってみた。 この警告自体は Jedi 自体が出している。 どうやら jedi.vim が依然古い API を使っているからのようだ。 なので、古いのを使わなくして新しい API に書き換えたのを Pull Request したら dev ブランチに取り込まれた。 Merge pull request #138 from heavenshell/fix_deprecation_warning · davidh
■ #!/usr/bin/env _ 今さらながら、 CGIの神話と現実というエントリ。ただし内容とはまったく関係なし。スクリプト言語の shebang 行(#!)でスクリプトインタープリタを直接書かずに /usr/bin/env でラップするという悪習はいったい誰が広めたんだろうか。ruby な人に多いように思うがそれだけじゃないし。 _ hoge というインタープリタを使うスクリプトの1行目をたとえば #!/usr/bin/env hoge としておくと、hoge の実行バイナリが /usr/bin/hoge でも /usr/local/bin/hoge でも $HOME/bin/hoge でもどこにあってもパスが通ってさえいれば起動できる。それはメリットなんだろうか。わしにはむしろデメリットにしか思えない。 _ /usr/bin/env を使うというのは、PATH の値にしたがってイ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く