2015-10-14 62 views
0

我有一个列表,这基本上是这样的:使用asarray返回类型错误:读取缓冲区对象错误

toLocArray 

>>[['Location 1', 'RAILS', 0.10520972, 20000], 
['Location 2', 'ROADS', 0.377652629, 20000], 
['Location 3', 'RAILS', 0.12588421, 20000], 
['Location 4', 'ROADS', 0.377652629, 20000]] 

我要投它作为一个ndarray,与指定的D型:

dtype = [('toLoc', 'a50'),('Network', 'a10'), ('timeCost', 'f8'), ('toLocCapacity', 'i4')] 
toLocArray = np.asarray(toLocArray, dtype=dtype) 

然而,我得到以下错误:

 89  dtype = [('toLoc', 'a50'),('Network', 'a10'), ('timeCost', 'f8'), ('toLocCapacity', 'i4')] 
---> 90  toLocArray = np.asarray(toLocArray,dtype=dtype) 
    91 
    92 

C:[path]\site-packages\numpy\core\numeric.pyc in asarray(a, dtype, order) 
    460 
    461  """ 
--> 462  return array(a, dtype, copy=False, order=order) 
    463 
    464 def asanyarray(a, dtype=None, order=None): 

TypeError: expected a readable buffer object 

从我读过这种错误发生时试图设置一个值wi这是错误的类型,但我不明白我在这里如何做到这一点。如果我不使用“dtype =”子句,我可以使asarray函数正常工作,但我需要定义这些字段。我究竟做错了什么?

回答

0

我找到了一种方法来完成这项工作。不知道这是否是“正确”的做事方式,但是将元组应用于原始数据使其能够满足我的需求:

toLocArray = map(tuple, toLocArray) 
相关问题