dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

python でメソッドの一覧を取得する方法

2019-11-30 16:40:32 | python
python でメソッドの一覧を取得する方法のメモ。

オブジェクトのメソッドの一覧を取得するには、inspect.getmembers() を使います。
import inspect

obj = "abc"

for m in inspect.getmembers(obj):
    print(m)


実行結果
('__add__', )
('__class__', <class 'str'>)
('__contains__', )
...
('translate', )
('upper', )
('zfill', )



numpy で 2 つのベクトルの cos を計算する方法

2019-11-17 17:52:33 | python
numpy で 2 つのベクトルの cos を計算する方法のメモ。

import numpy as np

v1 = np.array([0, 1, 2, 3, 4])
v2 = np.array([1, 2, 3, 4, 5])

cos = np.inner(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
cos
-> 0.9847319278346618


v1 または v2 が零ベクトルの可能性があれば、
np.linalg.norm(v1) または np.linalg.norm(v2)) の値を調べる必要がある。

python でのリスト操作方法

2019-11-16 20:02:19 | python
python でのリスト操作方法のメモ。

■リストの末尾に要素を追加 (スタックの push)
items = [0, 1, 2, 3]
items.append(4)
items
-> [0, 1, 2, 3]


■リストの末尾の要素を削除 (スタックの pop)
items = [0, 1, 2, 3, 4]
a = items.pop()
a
-> 4
items
-> [0, 1, 2, 3]


■リストの連結
items = [0, 1, 2, 3, 4]
items.extend([5, 6, 7])
items
-> [0, 1, 2, 3, 4, 5, 6, 7]



■リストの先頭に要素を追加
items = [0, 1, 2, 3]
items.insert(0, -1)
items
-> [-1, 0, 1, 2, 3]


■リストの先頭から要素を削除
items = [-1, 0, 1, 2, 3]
a = items.pop(0)
a
-> -1
items
-> [0, 1, 2, 3]



pythonでキャラクタコードと文字の変換すす方法のメモ

2019-11-12 00:45:11 | python
pythonでキャラクタコードと文字の変換する方法のメモ。

ord(文字) で指定文字のキャラクタコードを取得できます。
>>> ord('a')
97


chr(コード) で指定コードの文字を取得できます。
>>> chr(97)
'a'


a から z まで繰り返すには以下のようにします。
for code in range(ord('a'), ord('z')+1):
    print('%s' % (chr(code)))


python でライブラリのパスを指定する方法

2019-11-07 23:34:17 | python
python でライブラリのパスを指定する方法のメモ。

ライブラリを読み込む際、読み込み元からのライブラリとの相対パスで以下のように指定します。
import sys
import os

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/読み込み元からのライブラリとの相対パス')


libディレクトリにライブラリがある場合、以下を指定します。
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/lib')


nmslibの使い方のメモ

2019-11-07 23:24:44 | python
nmslibの使い方のメモ

■インデックス生成
vectors = numpy.array(numpy.array([...], ,dtype='float32'))

indexer = nmslib.init(method='hnsw', space='cosinesimil')
num = indexer.addDataPointBatch(vectors) # num: インデックス数
indexer.createIndex({'post': 2}, print_progress=True)


■インデックス保存
indexer.saveIndex(fname)


■インデックス読み込み
indexer = nmslib.init(method='hnsw', space='cosinesimil')
indexer.loadIndex(fname)


■検索
arg_vector = numpy.array([...], dtype='float32')
res = indexer.knnQuery(arg_vector, 10)

ids = res[0] # IDのリスト
dists = res[1] # 距離のリスト


grepでマッチした前後の行を表示する方法

2019-11-02 22:01:48 | linux
grepでマッチした前後の行を表示する方法のメモ

-A {行数} を指定すると、パターンにマッチした行から指定行数分の行も出力します。
"A" は after の A です。

-B {行数} を指定すると、パターンにマッチした行より前の指定行数分の行も出力します。
"B" は before の B です。

$ wget -O - 'https://news.goo.ne.jp/' | grep -A 1 -B 1 スタート
<li><a href="https://www.goo.ne.jp/sitemap/">サイトマップ</a></li>
<li><a href="https://www.goo.ne.jp/set/">スタートページに設定</a></li>
<li><a href="https://www.goo.ne.jp/rss/">RSS</a></li>