(警告-我是新手)
我使用scipy.io导入mat文件:
data = spio.loadmat('data.mat', struct_as_record=True, squeeze_me=True) data = data['b'] >>> <type 'numpy.void'>
这给了我一个numpy.void类型的文件。每一行有17个条目,它们是string、float、array类型。
print(data.shape) >>> (11000,)
我有另一个字符串列表,我将其转换为一个numpy.array:
filenames = np.array([filenames]) filenames = np.ndarray.flatten(filenames) print (filenames.shape) >>> (11000,) print(data.dtype) print(filenames.dtype) >>> [('fieldname1', 'O'), ('fieldname2', 'O'), ('fieldname3', 'O'), ('fieldname4', 'O'), ('fieldname5', 'O'), ('fieldname6', 'O'), ('fieldname7', 'O'), ('fieldname8', 'O'), ('fieldname9', 'O'), ('fieldname10', 'O'), ('fieldname11', 'O'), ('fieldname12', 'O'), ('fieldname13', 'O'), ('fieldname14', 'O'), ('fieldname15', 'O'), ('fieldname16', 'O'), ('fieldname17', 'O')] >>> |S16
我想把这些内容连成一列:
NEW = np.concatenate((data, filenames), axis=1)
但是我发现了一个错误:
>>> TypeError: invalid type promotion
任何帮助都将不胜感激。
发布于 2017-10-17 17:52:21
recfunctions 是一个模块,它提供了用于修改结构化数组(及其变体, recarray )的工具。它需要单独的进口。根据我的经验,这也是一种小问题。
recfunctions
recarray
In [158]: from numpy.lib import recfunctions
创建一个具有多个对象dtype字段的数组:
In [159]: dat = np.empty((3,),dtype=('O,O,O')) In [160]: dat Out[160]: array([(None, None, None), (None, None, None), (None, None, None)], dtype=[('f0', 'O'), ('f1', 'O'), ('f2', 'O')])
在调用 append_field 时进行了一些尝试-n-错误之后,这样做是可行的:
append_field
In [161]: names = np.array(['one','two','three'])