numpy和pytables问题(错误:元组索引超出范围)

时间:2012-10-29 01:32:22

标签: python numpy pytables

我是python和pytables的新手。目前我正在编写一个关于聚类和KNN算法的项目。这就是我所拥有的。

** * ** * ** * 的* 代码 * ** * ** * ** * ** < EM> * ****

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:其他功能

布拉布拉

第3步:从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通过显示给我一个艰难的时间: error:IndexError:元组索引超出范围 此错误来自 “D = ctypes.c_uint(pnts.shape [1])”这一行。

显然,输入参数肯定有问题。有关解决问题的想法吗?提前谢谢。

0 个答案:

没有答案