【发布时间】:2013-11-16 21:09:42
【问题描述】:
所以我有一个已读入列表的 CSV 文件。我已将该列表转换为数组,并使用以下函数将该数组保存到 MATLAB 文件中。
def save_array(arr,filename):
import scipy.io
out_dict={}
out_dict[filename]=arr
scipy.io.savemat(filename + '.mat',out_dict)
但是,当我打开 MATLAB 文件时,出现了问题。当我在 Python 中打开时,我得到以下输出:
{'M': array([[u'153 ', u'81 ', u'0.28 ', ..., u'0.19 ', u'-0.07', u'1 '],
[u'168 ', u'76 ', u'0.08 ', ..., u'0.98 ', u'0.42 ', u'0 '],
[u'184 ', u'92 ', u'0.18 ', ..., u'0.92 ', u'0.75 ', u'0 '],
...,
[u'183 ', u'62 ', u'0.57 ', ..., u'0.87 ', u'0.31 ', u'0 '],
[u'181 ', u'72 ', u'0.48 ', ..., u'0.91 ', u'1.2 ', u'0 '],
[u'158 ', u'77 ', u'1.01 ', ..., u'0.99 ', u'0.88 ', u'0 ']],
dtype='<U5'),
'__globals__': [],
'__header__': 'MATLAB 5.0 MAT-file Platform: posix, Created on: Tue Nov 5 15:28:57 2013',
'__version__': '1.0'}
为什么每个元素的开头都有u?我该如何纠正这个问题?
【问题讨论】:
-
u表示它是一个 unicode 字符串。 6 年来没有使用 matlab 文件,但我不想像这就是问题所在。是数组字符串还是浮点数中的数据?arr.dtype是什么? -
我同意@Paul,字符串是 unicode 的事实不是问题 --- 你有一个字符串数组的事实是真正的问题。如果在调用
save_array(arr, fname)之前,arr.dtype是<U5,那就是问题所在。 -
csv的第一行是名称列表,是字符串。那有什么用吗?
标签: python arrays matlab numpy scipy