1

私はpythonとpytablesが初めてです。現在、クラスタリングと KNN アルゴリズムに関するプロジェクトを書いています。それが私が持っているものです。

** * ** * ** * * コード * ** * ** * ** * ** * ****

import numpy.random as npr
import numpy as np

step0: クラスターを取得する

dtype = np.dtype('f4')

pnts_inds = np.arange(100)
npr.shuffle(pnts_inds)
pnts_inds = pnts_inds[:10]
pnts_inds = np.sort(pnts_inds)
for i,ind in enumerate(pnts_inds):
    clusters[i] = pnts_obj[ind]

step1: 結果を clst_fn.h5 という HDF5 ファイルに保存します。

filters = tables.Filters(complevel = 1, complib = 'zlib')
clst_fobj = tables.openFile('clst_fn.h5', 'w')  
clst_obj = clst_fobj.createCArray(clst_fobj.root, 'clusters',
           tables.Atom.from_dtype(dtype), clusters.shape,
           filters = filters)
clst_obj[:] = clusters
clst_fobj.close()

step2: その他の機能

ブラブラ

step3: clst_fn からクラスターをロードする

pnts_fobj= tables.openFile('clst_fn.h5','r')
for pnts in pnts_fobj.walkNodes('/', classname = 'Array'):
    break
#

step4: 別の関数 (knn と呼ばれる) を呼び出します。関数の入力引数は pnts からのデータです。knn 関数を個別に確認しました。この関数は、入力が pnts = npr.rand(100,128) の場合にうまく機能します。

def knn(pnts):
    pnts = numpy.ascontiguousarray(pnts)
    N = ctypes.c_uint(pnts.shape[0])
    D = ctypes.c_uint(pnts.shape[1])
#

clst_fn からのクラスターを使用して knn を呼び出す (ステップ 3 を参照)

knn(pnts)

** * ** * ** * * コードの終わり * ** * ** * ** * ** * ****

私の問題は、Pythonが次のように表示するのに苦労していることです: エラー: IndexError: タプルインデックスが範囲外です

明らかに、入力引数に何か問題があるに違いありません。問題を解決することについて何か考えはありますか? 前もって感謝します。

4

0 に答える 0