如果我以不同的方式初始化具有相同字段名称和类型的struct数组,会发生什么:
>>> a = np.zeros(2, dtype=[('x','int64'),('y','a')])
>>> a
array([(0L, ''), (0L, '')],
dtype=[('x', '<i8'), ('y', 'S')])
因此使用元组列表初始化可以正常工作。
>>> mdtype = dict(names=['x','y'],formats=['int64','a'])
>>> mdtype
{'names': ['x', 'y'], 'formats': ['int64', 'a']}
>>> a = np.zeros(2,dtype=mdtype)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: data type not understood
因此用dict初始化不会,问题是字符串类型:
>>> mdtype = dict(names=['x','y'],formats=['int64','float64'])
>>> a = np.zeros(2,dtype=mdtype)
>>>
没有问题。有任何想法吗?这是一个Numpy bug吗?
Numpy版本:1.8.0
Python 2.7.6(默认,2013年11月10日,19:24:24)[MSC v.1500 64位(AMD64)]在win32上