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