使用asarray返回TypeError:可读缓冲区对象错误

时间:2015-10-14 16:26:49

标签: python

我有一个列表,基本上看起来像:

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]]

我希望将其转换为带有指定dtype的ndarray:

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 

从我读过的内容中,当尝试设置错误类型的值时发生了这种错误,但我不知道如何在这里做到这一点。如果我不使用" dtype ="我可以让asarray函数工作。子句,但我需要定义字段。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来完成这项工作。不知道这是不是"对"做事的方式,但将元组应用于原始数据使它做我需要的:

toLocArray = map(tuple, toLocArray)