我刚刚遇到NumPy dtypes的问题。基本上我正在尝试创建一个如下所示的表(然后使用rec2csv保存它):
name1 name2 name3 . . .
name1 # # #
name2 # # #
name2 # # #
.
.
.
在我尝试添加名称标签之前,已经计算了矩阵(中心的数值数组)。我试过使用以下代码:
dt = dtype({'names' : tuple(blah), 'formats' : tuple(fmt)})
ReadArray = array(tuplelist, dtype=dt)
其中tuplelist是行列表(即行[name1,#,#,#...]),blah是字符串列表(即名称blah = ['name1', 'name2', ...]
),fmt是列表格式,s(即fmt = [str, float, float, ...]
)。
我得到的错误如下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "table_calc_try2.py", line 152, in table_calc_try2
dt = dtype({'names' : tuple(blah), 'formats' : tuple(fmt)})
TypeError: data type not understood
有人可以帮忙吗?
谢谢!
答案 0 :(得分:12)
以下代码可能有所帮助:
import numpy as np
dt = np.dtype([('name1', '|S10'), ('name2', '<f8')])
tuplelist=[
('n1', 1.2),
('n2', 3.4),
]
arr = np.array(tuplelist, dtype=dt)
print(arr['name1'])
# ['n1' 'n2']
print(arr['name2'])
# [ 1.2 3.4]
您当前的问题是np.dtype
期望格式说明符是numpy类型,例如'|S10'
或'<f8'
而不是Python类型,例如str
或{{ 1}}。如果您输入float
,您会看到很多关于如何指定help(np.dtype)
的示例。 (我只提了几个。)
请注意,np.array需要一个元组列表。这是相当特别的。
列表列表会引发np.dtypes
。
元组(元组元组)或(元组元组)引发TypeError: expected a readable buffer object
。