Python loadtxt和genfromtxt截断字符串

时间:2014-09-10 02:37:21

标签: python string numpy truncated genfromtxt

我有一个2列数组混合类型数组,我需要读入并重新整形为数据立方体。我已经完成了大部分工作,但由于某些原因,numpy.loadtxt和np.genfromtxt都会丢弃元组字符串部分中第8个字符后的所有内容。我有25个8个参数 - 值对的块,对应于不同质量和金属度的恒星。例如,Teff \t\t 5.2739E+3(字符串和浮点数之间有2个制表符)转换为键值对就好了,但MASS/MSUN \t\t 0.800转换为'MASS/MSU':0.800而不是{{1}像我期望的那样。同样,'MASS/MSUN':0.800变为LOG(L/LSUN) \t\t 0.0522而不是'LOG(L/LS': 0.0522 为什么字符串中的最后一个字符会掉落? 我已经尝试将分隔符设置为仅标签,只有标签和换行符(似乎没有这样),注释掉块之间的线条等等。似乎无论我做什么,字符限制为每个字符串都停留在8.必须有一个我需要声明的字符串子类型。我做了一个解决方法,它只是困扰我。

这是我的代码(我使用Spyder GUI,BTW):

'LOG(L/LSUN)': 0.0522

1 个答案:

答案 0 :(得分:1)

当字段的数据类型指定为str时,genfromtxt分配给字段的默认大小看起来是8个字符。如果您知道最大字符数是12,则可以使用dtype=['S12', float]。 (请注意,我使用了列表,而不是元组。)您还可以使用dtype=None,告诉genfromtxt从文件中找到的每个字段中找出每个字段的数据类型。